0

Migrate OnDisplayRemoved to OnDisplaysRemoved

Deprecate DisplayObserver::OnDisplayRemoved and use
DisplayObserver::OnDisplaysRemoved instead.

Bug: 329003664
Change-Id: I02dbad37ca850533ef2acf1a24464f911ffc188c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5502081
Commit-Queue: Vincent Chiang <vincentchiang@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1297147}
This commit is contained in:
Vincent Chiang
2024-05-06 22:09:36 +00:00
committed by Chromium LUCI CQ
parent 44664fd8cd
commit ba3cd346f1
52 changed files with 156 additions and 148 deletions
ash
chrome/browser
chromeos/components/cdm_factory_daemon
components
content
extensions/browser/api/system_display
ui

@ -59,7 +59,7 @@ class ASH_EXPORT AccessibilityPanelLayoutManager
// DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override {}
void OnDisplayRemoved(const display::Display& old_display) override {}
void OnDisplaysRemoved(const display::Displays& removed_displays) override {}
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -563,7 +563,7 @@ class CrosDisplayConfig::ObserverImpl
NotifyObserversDisplayConfigChanged();
}
void OnDisplayRemoved(const display::Display& old_display) override {
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
NotifyObserversDisplayConfigChanged();
}

@ -313,9 +313,11 @@ void DisplayColorManager::OnDisplayModeChanged(
displays_ctm_support_ = DisplayCtmSupport::kMixed;
}
void DisplayColorManager::OnDisplayRemoved(
const display::Display& old_display) {
displays_color_matrix_map_.erase(old_display.id());
void DisplayColorManager::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
displays_color_matrix_map_.erase(display.id());
}
}
void DisplayColorManager::ApplyDisplayColorCalibration(

@ -77,7 +77,7 @@ class ASH_EXPORT DisplayColorManager
display::MultipleDisplayState failed_new_state) override {}
// display::DisplayObserver:
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
protected:
virtual void FinishLoadCalibrationForDisplay(

@ -102,9 +102,11 @@ class DisplayManagerObserverValidator : public display::DisplayObserver,
added_displays_.push_back(new_display);
}
}
void OnDisplayRemoved(const display::Display& old_display) override {
if (!base::Contains(added_displays_, old_display)) {
removed_displays_.push_back(old_display);
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
for (const auto& display : removed_displays) {
if (!base::Contains(added_displays_, display)) {
removed_displays_.push_back(display);
}
}
}
void OnDisplayMetricsChanged(const display::Display& display,
@ -257,8 +259,8 @@ class DisplayManagerTest : public AshTestBase,
void OnDisplayAdded(const display::Display& new_display) override {
added_.push_back(new_display);
}
void OnDisplayRemoved(const display::Display& old_display) override {
++removed_count_;
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
removed_count_ += removed_displays.size();
}
// display::DisplayManager::Observer:
@ -2629,7 +2631,7 @@ class TestDisplayObserver : public display::DisplayObserver {
EXPECT_TRUE(test_api.GetHosts().empty());
changed_ = true;
}
void OnDisplayRemoved(const display::Display& old_display) override {
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
// Mirror window should not be created until the external display
// is removed.
EXPECT_TRUE(test_api.GetHosts().empty());

@ -234,16 +234,19 @@ void ResolutionNotificationController::RevertResolutionChange(
}
}
void ResolutionNotificationController::OnDisplayRemoved(
const display::Display& old_display) {
if (change_info_ && change_info_->display_id == old_display.id()) {
if (confirmation_dialog_) {
// Use CloseWithReason rather than CloseNow to make sure the screen
// doesn't stay dimmed after the widget is closed. b/288485093.
confirmation_dialog_->GetWidget()->CloseWithReason(
views::Widget::ClosedReason::kLostFocus);
void ResolutionNotificationController::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
if (change_info_ && change_info_->display_id == display.id()) {
if (confirmation_dialog_) {
// Use CloseWithReason rather than CloseNow to make sure the screen
// doesn't stay dimmed after the widget is closed. b/288485093.
confirmation_dialog_->GetWidget()->CloseWithReason(
views::Widget::ClosedReason::kLostFocus);
}
RevertResolutionChange(/*display_was_removed=*/true);
break;
}
RevertResolutionChange(/*display_was_removed=*/true);
}
}

@ -91,7 +91,7 @@ class ASH_EXPORT ResolutionNotificationController
void RevertResolutionChange(bool display_was_removed);
// display::DisplayObserver overrides:
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
// WindowTreeHostManager::Observer overrides:
void OnDisplayConfigurationChanged() override;

@ -73,9 +73,9 @@ class TestDisplayRemoveObserver : public display::DisplayObserver {
++added_displays_;
}
void OnDisplayRemoved(const display::Display& old_display) override {
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
TestPrimaryDisplay();
++removed_displays_;
removed_displays_ += removed_displays.size();
}
private:

@ -48,16 +48,20 @@ void DisplaySpeakerController::OnDisplayAdded(
CrasAudioHandler::Get()->SetActiveHDMIOutoutRediscoveringIfNecessary(true);
}
void DisplaySpeakerController::OnDisplayRemoved(
const display::Display& old_display) {
if (!old_display.IsInternal())
return;
UpdateInternalSpeakerForDisplayRotation();
void DisplaySpeakerController::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
if (display.IsInternal()) {
UpdateInternalSpeakerForDisplayRotation();
// This event will be triggered when the lid of the device is closed to enter
// the docked mode, we should always start or re-start HDMI re-discovering
// grace period right after this event.
CrasAudioHandler::Get()->SetActiveHDMIOutoutRediscoveringIfNecessary(true);
// This event will be triggered when the lid of the device is closed to
// enter the docked mode, we should always start or re-start HDMI
// re-discovering grace period right after this event.
CrasAudioHandler::Get()->SetActiveHDMIOutoutRediscoveringIfNecessary(
true);
break;
}
}
}
void DisplaySpeakerController::OnDisplayMetricsChanged(

@ -24,7 +24,7 @@ class DisplaySpeakerController : public display::DisplayObserver,
// display::DisplayObserver.
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -74,10 +74,14 @@ void TouchObserverHud::OnWidgetDestroying(views::Widget* widget) {
delete this;
}
void TouchObserverHud::OnDisplayRemoved(const display::Display& old_display) {
if (old_display.id() != display_id_)
return;
widget_->CloseNow();
void TouchObserverHud::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
if (display.id() == display_id_) {
widget_->CloseNow();
break;
}
}
}
void TouchObserverHud::OnDisplayMetricsChanged(const display::Display& display,

@ -66,7 +66,7 @@ class ASH_EXPORT TouchObserverHud
void OnWidgetDestroying(views::Widget* widget) override;
// display::DisplayObserver:
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t metrics) override;

@ -565,8 +565,8 @@ void CameraAppHelperImpl::OnDisplayAdded(const display::Display& new_display) {
CheckExternalScreenState();
}
void CameraAppHelperImpl::OnDisplayRemoved(
const display::Display& old_display) {
void CameraAppHelperImpl::OnDisplaysRemoved(
const display::Displays& removed_displays) {
CheckExternalScreenState();
}

@ -143,7 +143,7 @@ class CameraAppHelperImpl : public ScreenBacklightObserver,
// display::DisplayObserver overrides;
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayTabletStateChanged(display::TabletState state) override;
void OnLidStateChanged(cros::mojom::LidState state) override;

@ -1351,8 +1351,8 @@ void SplitViewController::OnOverviewModeEnded() {
}
}
void SplitViewController::OnDisplayRemoved(
const display::Display& old_display) {
void SplitViewController::OnDisplaysRemoved(
const display::Displays& removed_displays) {
// If the `root_window_`is the root window of the display which is going to
// be removed, there's no need to start overview.
if (GetRootWindowSettings(root_window_)->display_id ==

@ -337,7 +337,7 @@ class ASH_EXPORT SplitViewController : public aura::WindowObserver,
void OnOverviewModeEnded() override;
// display::DisplayObserver:
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t metrics) override;
void OnDisplayTabletStateChanged(display::TabletState state) override;

@ -486,8 +486,8 @@ void TabletModeWindowManager::OnDisplayAdded(const display::Display& display) {
DisplayConfigurationChanged();
}
void TabletModeWindowManager::OnDisplayRemoved(
const display::Display& display) {
void TabletModeWindowManager::OnDisplaysRemoved(
const display::Displays& removed_displays) {
DisplayConfigurationChanged();
}

@ -114,7 +114,7 @@ class ASH_EXPORT TabletModeWindowManager : public aura::WindowObserver,
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& display) override;
void OnDisplayRemoved(const display::Display& display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
// SessionObserver:
void OnActiveUserSessionChanged(const AccountId& account_id) override;

@ -233,17 +233,20 @@ void WiredDisplayMediaRouteProvider::OnDisplayAdded(
NotifySinkObservers();
}
void WiredDisplayMediaRouteProvider::OnDisplayRemoved(
const Display& old_display) {
const std::string sink_id =
WiredDisplayMediaRouteProvider::GetSinkIdForDisplay(old_display);
auto it =
base::ranges::find(presentations_, sink_id,
[](const Presentations::value_type& presentation) {
return presentation.second.route().media_sink_id();
});
if (it != presentations_.end())
it->second.receiver()->ExitFullscreen();
void WiredDisplayMediaRouteProvider::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
const std::string sink_id =
WiredDisplayMediaRouteProvider::GetSinkIdForDisplay(display);
auto it =
base::ranges::find(presentations_, sink_id,
[](const Presentations::value_type& presentation) {
return presentation.second.route().media_sink_id();
});
if (it != presentations_.end()) {
it->second.receiver()->ExitFullscreen();
}
}
NotifySinkObservers();
}

@ -91,7 +91,7 @@ class WiredDisplayMediaRouteProvider : public mojom::MediaRouteProvider,
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -270,7 +270,7 @@ TEST_F(WiredDisplayMediaRouteProviderTest, NotifyOnDisplayChange) {
EXPECT_CALL(router_,
OnSinksReceived(mojom::MediaRouteProviderId::WIRED_DISPLAY, _,
IsEmpty(), _));
provider_->OnDisplayRemoved(secondary_display1_);
provider_->OnDisplaysRemoved({secondary_display1_});
base::RunLoop().RunUntilIdle();
// Add a display that mirrors the primary display. The sink list should still
@ -293,7 +293,7 @@ TEST_F(WiredDisplayMediaRouteProviderTest, NoDisplay) {
// primary display, as it would be invalid.
EXPECT_CALL(*provider_, GetPrimaryDisplayInternal()).Times(0);
provider_->set_all_displays({});
provider_->OnDisplayRemoved(primary_display_);
provider_->OnDisplaysRemoved({primary_display_});
base::RunLoop().RunUntilIdle();
}
@ -404,7 +404,7 @@ TEST_F(WiredDisplayMediaRouteProviderTest, ExitFullscreenOnDisplayRemoved) {
base::RunLoop().RunUntilIdle();
EXPECT_CALL(*receiver_creator_.receiver(), ExitFullscreen());
provider_->OnDisplayRemoved(secondary_display1_);
provider_->OnDisplaysRemoved({secondary_display1_});
}
} // namespace media_router

@ -1259,8 +1259,8 @@ void ChromeBrowserMainExtraPartsMetrics::OnDisplayAdded(
RecordDisplayHDRStatus(new_display);
}
void ChromeBrowserMainExtraPartsMetrics::OnDisplayRemoved(
const display::Display& old_display) {
void ChromeBrowserMainExtraPartsMetrics::OnDisplaysRemoved(
const display::Displays& removed_displays) {
EmitDisplaysChangedMetric();
}

@ -92,7 +92,7 @@ class ChromeBrowserMainExtraPartsMetrics : public ChromeBrowserMainExtraParts,
private:
// DisplayObserver overrides.
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -327,7 +327,8 @@ void OutputProtectionImpl::OnDisplayMetricsChanged(
HandleDisplayChange();
}
void OutputProtectionImpl::OnDisplayRemoved(const display::Display& display) {
void OutputProtectionImpl::OnDisplaysRemoved(
const display::Displays& removed_displays) {
HandleDisplayChange();
}

@ -101,7 +101,7 @@ class COMPONENT_EXPORT(CDM_FACTORY_DAEMON) OutputProtectionImpl
void OnDisplayAdded(const display::Display& display) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;
void OnDisplayRemoved(const display::Display& display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
// Helper methods to report output protection UMAs.
void ReportOutputProtectionQuery();

@ -542,7 +542,8 @@ void WaylandRemoteShell::OnDisplayAdded(const display::Display& new_display) {
ScheduleSendDisplayMetrics(0);
}
void WaylandRemoteShell::OnDisplayRemoved(const display::Display& old_display) {
void WaylandRemoteShell::OnDisplaysRemoved(
const display::Displays& removed_displays) {
ScheduleSendDisplayMetrics(0);
}

@ -94,7 +94,7 @@ class WaylandRemoteShell : public display::DisplayObserver,
// Overridden from display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayTabletStateChanged(display::TabletState state) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -197,7 +197,7 @@ class REMOTE_COCOA_APP_SHIM_EXPORT NativeWidgetNSWindowBridge
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t metrics) override;

@ -1315,8 +1315,8 @@ void NativeWidgetNSWindowBridge::OnDisplayAdded(
UpdateWindowDisplay();
}
void NativeWidgetNSWindowBridge::OnDisplayRemoved(
const display::Display& display) {
void NativeWidgetNSWindowBridge::OnDisplaysRemoved(
const display::Displays& removed_displays) {
UpdateWindowDisplay();
}

@ -101,7 +101,7 @@ class RenderWidgetHostNSViewBridge : public mojom::RenderWidgetHostNSView,
// display::DisplayObserver implementation.
void OnDisplayAdded(const display::Display&) override;
void OnDisplayRemoved(const display::Display&) override;
void OnDisplaysRemoved(const display::Displays&) override;
void OnDisplayMetricsChanged(const display::Display&, uint32_t) override;
void OnSharingServiceInvoked(ShowSharingServicePickerCallback callback,

@ -240,7 +240,7 @@ void RenderWidgetHostNSViewBridge::OnDisplayAdded(const display::Display&) {
[cocoa_view_ updateScreenProperties];
}
void RenderWidgetHostNSViewBridge::OnDisplayRemoved(const display::Display&) {
void RenderWidgetHostNSViewBridge::OnDisplaysRemoved(const display::Displays&) {
[cocoa_view_ updateScreenProperties];
}

@ -384,9 +384,10 @@ void GpuDataManagerImpl::OnDisplayAdded(const display::Display& new_display) {
private_->OnDisplayAdded(new_display);
}
void GpuDataManagerImpl::OnDisplayRemoved(const display::Display& old_display) {
void GpuDataManagerImpl::OnDisplaysRemoved(
const display::Displays& removed_displays) {
base::AutoLock auto_lock(lock_);
private_->OnDisplayRemoved(old_display);
private_->OnDisplaysRemoved(removed_displays);
}
void GpuDataManagerImpl::OnDisplayMetricsChanged(

@ -215,7 +215,7 @@ class CONTENT_EXPORT GpuDataManagerImpl : public GpuDataManager,
// DisplayObserver overrides.
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;

@ -1482,8 +1482,8 @@ void GpuDataManagerImplPrivate::OnDisplayAdded(
}));
}
void GpuDataManagerImplPrivate::OnDisplayRemoved(
const display::Display& old_display) {
void GpuDataManagerImplPrivate::OnDisplaysRemoved(
const display::Displays& removed_displays) {
base::AutoUnlock unlock(owner_->lock_);
// Notify observers in the browser process.

@ -146,7 +146,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate {
void SetApplicationVisible(bool is_visible);
void OnDisplayAdded(const display::Display& new_display);
void OnDisplayRemoved(const display::Display& old_display);
void OnDisplaysRemoved(const display::Displays& removed_displays);
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics);

@ -231,8 +231,8 @@ void DisplayInfoProvider::OnDisplayAdded(const display::Display& new_display) {
DispatchOnDisplayChangedEvent();
}
void DisplayInfoProvider::OnDisplayRemoved(
const display::Display& old_display) {
void DisplayInfoProvider::OnDisplaysRemoved(
const display::Displays& removed_displays) {
DispatchOnDisplayChangedEvent();
}

@ -135,7 +135,7 @@ class DisplayInfoProvider : public display::DisplayObserver {
// DisplayObserver
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t metrics) override;

@ -35,9 +35,6 @@ void DisplayChangeNotifier::NotifyDisplaysChanged(
++old_it) {
if (!base::Contains(new_displays, old_it->id(), &Display::id)) {
removed_displays.push_back(*old_it);
for (DisplayObserver& observer : observer_list_) {
observer.OnDisplayRemoved(*old_it);
}
}
}

@ -27,7 +27,9 @@ class MockDisplayObserver : public DisplayObserver {
void OnDisplayAdded(const Display& display) override { display_added_++; }
void OnDisplayRemoved(const Display& display) override { display_removed_++; }
void OnDisplaysRemoved(const Displays& removed_displays) override {
display_removed_ += removed_displays.size();
}
void OnDisplayMetricsChanged(const Display& display,
uint32_t metrics) override {

@ -133,7 +133,6 @@ void DisplayList::RemoveDisplay(int64_t id) {
const Display display = *iter;
displays_.erase(iter);
for (DisplayObserver& observer : observers_) {
observer.OnDisplayRemoved(display);
observer.OnDisplaysRemoved({display});
}
DCHECK(IsValid());

@ -52,8 +52,10 @@ class DisplayObserverImpl : public DisplayObserver {
void OnDisplayAdded(const Display& new_display) override {
AddChange("Added id=" + base::NumberToString(new_display.id()));
}
void OnDisplayRemoved(const Display& old_display) override {
AddChange("Removed id=" + base::NumberToString(old_display.id()));
void OnDisplaysRemoved(const Displays& removed_displays) override {
for (const auto& display : removed_displays) {
AddChange("Removed id=" + base::NumberToString(display.id()));
}
}
void OnDisplayMetricsChanged(const Display& display,
uint32_t changed_metrics) override {

@ -44,11 +44,6 @@ class DISPLAY_EXPORT DisplayObserver : public base::CheckedObserver {
// Called before displays have been removed.
virtual void OnWillRemoveDisplays(const Displays& removed_displays) {}
// [Deprecated] Use `OnDisplaysRemoved` instead.
// Called when |old_display| has been removed.
// TODO(crbug.com/329003664): Remove this method.
virtual void OnDisplayRemoved(const Display& old_display) {}
// Called *after* `removed_displays` have been removed. Not called per
// display.
virtual void OnDisplaysRemoved(const Displays& removed_displays) {}

@ -87,7 +87,7 @@ class VirtualDisplayUtilMac : public VirtualDisplayUtil,
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t changed_metrics) override;
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayAddedOrRemoved(int64_t id);

@ -241,7 +241,7 @@ class DisplayMetricsChangeObserver : public display::DisplayObserver {
run_loop_.Quit();
}
void OnDisplayAdded(const display::Display& new_display) override {}
void OnDisplayRemoved(const display::Display& old_display) override {}
void OnDisplaysRemoved(const display::Displays& removed_displays) override {}
const int64_t display_id_;
const gfx::Size size_;
@ -548,14 +548,15 @@ void VirtualDisplayUtilMac::OnDisplayAdded(
OnDisplayAddedOrRemoved(new_display.id());
}
void VirtualDisplayUtilMac::OnDisplayRemoved(
const display::Display& old_display) {
// TODO(crbug.com/40148077): Please remove this log or replace it with
// [D]CHECK() ASAP when the TEST is stable.
LOG(INFO) << "VirtualDisplayUtilMac::" << __func__
<< " - display id: " << old_display.id() << ".";
OnDisplayAddedOrRemoved(old_display.id());
void VirtualDisplayUtilMac::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
// TODO(crbug.com/40148077): Please remove this log or replace it with
// [D]CHECK() ASAP when the TEST is stable.
LOG(INFO) << "VirtualDisplayUtilMac::" << __func__
<< " - display id: " << display.id() << ".";
OnDisplayAddedOrRemoved(display.id());
}
}
void VirtualDisplayUtilMac::OnDisplayAddedOrRemoved(int64_t id) {

@ -1347,24 +1347,15 @@ void DisplayManager::UpdateDisplaysWith(
}
}
for (const auto& display : removed_displays) {
NotifyDisplayRemoved(display);
}
for (size_t index : added_display_indices) {
NotifyDisplayAdded(active_display_list_[index]);
if (!removed_displays.empty()) {
NotifyDisplaysRemoved(removed_displays);
}
active_display_list_.resize(active_display_list_size);
is_updating_display_list_ = false;
// OnDidRemoveDisplays is called after the displays have been removed,
// in comparison to NotifyDisplayRemoved/OnDisplayRemoved which on Ash
// is called before.
if (!removed_displays.empty()) {
for (auto& display_observer : display_observers_) {
display_observer.OnDisplaysRemoved(removed_displays);
}
for (size_t index : added_display_indices) {
NotifyDisplayAdded(active_display_list_[index]);
}
UpdatePrimaryDisplayIdIfNecessary();
@ -2605,9 +2596,9 @@ void DisplayManager::NotifyWillRemoveDisplays(const Displays& displays) {
}
}
void DisplayManager::NotifyDisplayRemoved(const Display& display) {
void DisplayManager::NotifyDisplaysRemoved(const Displays& displays) {
for (auto& display_observer : display_observers_) {
display_observer.OnDisplayRemoved(display);
display_observer.OnDisplaysRemoved(displays);
}
}

@ -503,7 +503,7 @@ class DISPLAY_MANAGER_EXPORT DisplayManager
void NotifyMetricsChanged(const Display& display, uint32_t metrics);
void NotifyDisplayAdded(const Display& display);
void NotifyWillRemoveDisplays(const Displays& display);
void NotifyDisplayRemoved(const Display& display);
void NotifyDisplaysRemoved(const Displays& displays);
void NotifyWillProcessDisplayChanges();
void NotifyDidProcessDisplayChanges(
const DisplayManagerObserver::DisplayConfigurationChange& config_change);

@ -150,13 +150,15 @@ void VirtualDisplayUtilWin::OnDisplayAdded(
OnDisplayAddedOrRemoved(new_display.id());
}
void VirtualDisplayUtilWin::OnDisplayRemoved(
const display::Display& old_display) {
base::EraseIf(virtual_displays_,
[&old_display](const std::pair<unsigned short, int64_t>& obj) {
return obj.second == old_display.id();
});
OnDisplayAddedOrRemoved(old_display.id());
void VirtualDisplayUtilWin::OnDisplaysRemoved(
const display::Displays& removed_displays) {
for (const auto& display : removed_displays) {
base::EraseIf(virtual_displays_,
[&display](const std::pair<unsigned short, int64_t>& obj) {
return obj.second == display.id();
});
OnDisplayAddedOrRemoved(display.id());
}
}
bool VirtualDisplayUtilWin::SetDriverProperties(DriverProperties properties) {

@ -43,7 +43,7 @@ class VirtualDisplayUtilWin : public display::DisplayObserver,
private:
// display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
bool SetDriverProperties(DriverProperties properties);
void OnDisplayAddedOrRemoved(int64_t id);

@ -115,9 +115,9 @@ void DesktopMessagePopupCollection::OnDisplayAdded(
UpdatePrimaryDisplay();
}
void DesktopMessagePopupCollection::OnDisplayRemoved(
const display::Display& removed_display) {
// The removed display may have been the primary display.
void DesktopMessagePopupCollection::OnDisplaysRemoved(
const display::Displays& removed_displays) {
// One of the removed displays may have been the primary display.
UpdatePrimaryDisplay();
}

@ -67,7 +67,7 @@ class MESSAGE_CENTER_EXPORT DesktopMessagePopupCollection
// Overridden from display::DisplayObserver:
void OnDisplayAdded(const display::Display& new_display) override;
void OnDisplayRemoved(const display::Display& old_display) override;
void OnDisplaysRemoved(const display::Displays& removed_displays) override;
void OnDisplayMetricsChanged(const display::Display& display,
uint32_t metrics) override;

@ -70,11 +70,8 @@ class TestDisplayObserver : public display::DisplayObserver {
display_ = new_display;
}
void OnDisplayRemoved(const display::Display& old_display) override {
removed_display_ = old_display;
}
void OnDisplaysRemoved(const display::Displays& removed_displays) override {
removed_display_ = removed_displays.back();
if (displays_removed_closure_) {
displays_removed_closure_.Run();
}

@ -46,7 +46,8 @@ struct MockDisplayObserver : public display::DisplayObserver {
~MockDisplayObserver() override = default;
MOCK_METHOD1(OnDisplayAdded, void(const display::Display& new_display));
MOCK_METHOD1(OnDisplayRemoved, void(const display::Display& old_display));
MOCK_METHOD1(OnDisplaysRemoved,
void(const display::Displays& removed_displays));
MOCK_METHOD2(OnDisplayMetricsChanged,
void(const display::Display& display, uint32_t changed_metrics));
};
@ -132,7 +133,7 @@ TEST_F(X11ScreenOzoneTest, AddRemoveListDisplays) {
// Initially only primary display is expected to be in place
EXPECT_EQ(1u, screen()->GetAllDisplays().size());
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(2);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(2);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(2);
auto display_2 = CreateDisplay(gfx::Rect(800, 0, 1280, 720));
AddDisplayForTest(*display_2);
@ -230,7 +231,7 @@ TEST_F(X11ScreenOzoneTest, GetDisplayMatchingMultiple) {
TEST_F(X11ScreenOzoneTest, BoundsChangeSingleMonitor) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(1);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
std::vector<display::Display> displays;
displays.emplace_back(primary_display().id(), gfx::Rect(0, 0, 1024, 768));
@ -240,7 +241,7 @@ TEST_F(X11ScreenOzoneTest, BoundsChangeSingleMonitor) {
TEST_F(X11ScreenOzoneTest, AddMonitorToTheRight) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(1);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
std::vector<display::Display> displays;
displays.emplace_back(primary_display().id(), kPrimaryDisplayBounds);
@ -251,7 +252,7 @@ TEST_F(X11ScreenOzoneTest, AddMonitorToTheRight) {
TEST_F(X11ScreenOzoneTest, AddMonitorToTheLeft) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(1);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(1);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
std::vector<display::Display> displays;
displays.emplace_back(primary_display().id(), gfx::Rect(0, 0, 1024, 768));
@ -267,7 +268,7 @@ TEST_F(X11ScreenOzoneTest, RemoveMonitorOnRight) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(1);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(1);
displays.clear();
displays.emplace_back(primary_display().id(), kPrimaryDisplayBounds);
@ -282,7 +283,7 @@ TEST_F(X11ScreenOzoneTest, RemoveMonitorOnLeft) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(1);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(1);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(1);
displays.clear();
displays.emplace_back(kSecondDisplay, gfx::Rect(0, 0, 1024, 768));
@ -377,7 +378,7 @@ TEST_F(X11ScreenOzoneTest, RotationChange) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(5);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
displays[0].set_rotation(display::Display::ROTATE_90);
UpdateDisplayListForTest(displays);
@ -405,7 +406,7 @@ TEST_F(X11ScreenOzoneTest, WorkareaChange) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(4);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
displays[0].set_work_area(gfx::Rect(0, 0, 300, 300));
UpdateDisplayListForTest(displays);
@ -433,7 +434,7 @@ TEST_F(X11ScreenOzoneTest, DeviceScaleFactorChange) {
EXPECT_CALL(display_observer_, OnDisplayMetricsChanged(_, _)).Times(4);
EXPECT_CALL(display_observer_, OnDisplayAdded(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplayRemoved(_)).Times(0);
EXPECT_CALL(display_observer_, OnDisplaysRemoved(_)).Times(0);
displays[0].set_device_scale_factor(2.5f);
UpdateDisplayListForTest(displays);