Commit 8e192433 authored by Richard Knoll's avatar Richard Knoll Committed by Commit Bot

Add CHECK to WidgetObserver subclasses

WidgetObservers need to be removed from all ObserverLists before
destruction otherwise it will CHECK fail when iterating over the list.
The CHECK is added to all subclasses to retain readable stack traces in
release builds.

The goal is to find all instances where the observer is not removed as
that causes a hard to reproduce failure.

AX-Relnotes: n/a.
Bug: 1055483
Change-Id: I481ee30e681220ff697c7fbb2380470f17cfd465
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2254598Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: Richard Knoll <knollr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#781737}
parent 29800115
...@@ -19,6 +19,7 @@ FocusRingController::FocusRingController() : visible_(false), widget_(NULL) {} ...@@ -19,6 +19,7 @@ FocusRingController::FocusRingController() : visible_(false), widget_(NULL) {}
FocusRingController::~FocusRingController() { FocusRingController::~FocusRingController() {
SetVisible(false); SetVisible(false);
CHECK(!IsInObserverList());
} }
void FocusRingController::SetVisible(bool visible) { void FocusRingController::SetVisible(bool visible) {
......
...@@ -107,6 +107,7 @@ AppListPresenterImpl::~AppListPresenterImpl() { ...@@ -107,6 +107,7 @@ AppListPresenterImpl::~AppListPresenterImpl() {
if (view_->GetWidget()) if (view_->GetWidget())
view_->GetWidget()->CloseNow(); view_->GetWidget()->CloseNow();
} }
CHECK(!IsInObserverList());
} }
aura::Window* AppListPresenterImpl::GetWindow() const { aura::Window* AppListPresenterImpl::GetWindow() const {
......
...@@ -71,6 +71,7 @@ AssistantWebUiController::AssistantWebUiController() { ...@@ -71,6 +71,7 @@ AssistantWebUiController::AssistantWebUiController() {
AssistantWebUiController::~AssistantWebUiController() { AssistantWebUiController::~AssistantWebUiController() {
CloseUi(); CloseUi();
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void AssistantWebUiController::OnWidgetDestroying(views::Widget* widget) { void AssistantWebUiController::OnWidgetDestroying(views::Widget* widget) {
......
...@@ -13,6 +13,7 @@ ModeIndicatorObserver::ModeIndicatorObserver() : active_widget_(nullptr) {} ...@@ -13,6 +13,7 @@ ModeIndicatorObserver::ModeIndicatorObserver() : active_widget_(nullptr) {}
ModeIndicatorObserver::~ModeIndicatorObserver() { ModeIndicatorObserver::~ModeIndicatorObserver() {
if (active_widget_) if (active_widget_)
active_widget_->RemoveObserver(this); active_widget_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void ModeIndicatorObserver::AddModeIndicatorWidget(views::Widget* widget) { void ModeIndicatorObserver::AddModeIndicatorWidget(views::Widget* widget) {
......
...@@ -115,6 +115,7 @@ DockedMagnifierControllerImpl::~DockedMagnifierControllerImpl() { ...@@ -115,6 +115,7 @@ DockedMagnifierControllerImpl::~DockedMagnifierControllerImpl() {
shell->window_tree_host_manager()->RemoveObserver(this); shell->window_tree_host_manager()->RemoveObserver(this);
shell->RemovePreTargetHandler(this); shell->RemovePreTargetHandler(this);
} }
CHECK(!views::WidgetObserver::IsInObserverList());
} }
// static // static
......
...@@ -184,6 +184,7 @@ MagnifierGlass::MagnifierGlass(Params params) : params_(std::move(params)) {} ...@@ -184,6 +184,7 @@ MagnifierGlass::MagnifierGlass(Params params) : params_(std::move(params)) {}
MagnifierGlass::~MagnifierGlass() { MagnifierGlass::~MagnifierGlass() {
CloseMagnifierWindow(); CloseMagnifierWindow();
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void MagnifierGlass::ShowFor(aura::Window* root_window, void MagnifierGlass::ShowFor(aura::Window* root_window,
......
...@@ -291,6 +291,7 @@ ArcNotificationContentView::~ArcNotificationContentView() { ...@@ -291,6 +291,7 @@ ArcNotificationContentView::~ArcNotificationContentView() {
item_->RemoveObserver(this); item_->RemoveObserver(this);
item_->DecrementWindowRefCount(); item_->DecrementWindowRefCount();
} }
CHECK(!views::WidgetObserver::IsInObserverList());
} }
const char* ArcNotificationContentView::GetClassName() const { const char* ArcNotificationContentView::GetClassName() const {
......
...@@ -118,6 +118,7 @@ LoginShelfGestureController::~LoginShelfGestureController() { ...@@ -118,6 +118,7 @@ LoginShelfGestureController::~LoginShelfGestureController() {
nudge_ = nullptr; nudge_ = nullptr;
std::move(exit_handler_).Run(); std::move(exit_handler_).Run();
CHECK(!IsInObserverList());
} }
bool LoginShelfGestureController::HandleGestureEvent( bool LoginShelfGestureController::HandleGestureEvent(
......
...@@ -49,6 +49,7 @@ AshMessagePopupCollection::~AshMessagePopupCollection() { ...@@ -49,6 +49,7 @@ AshMessagePopupCollection::~AshMessagePopupCollection() {
shelf_->RemoveObserver(this); shelf_->RemoveObserver(this);
for (views::Widget* widget : tracked_widgets_) for (views::Widget* widget : tracked_widgets_)
widget->RemoveObserver(this); widget->RemoveObserver(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void AshMessagePopupCollection::StartObserving( void AshMessagePopupCollection::StartObserving(
......
...@@ -132,6 +132,7 @@ UnifiedMessageCenterBubble::~UnifiedMessageCenterBubble() { ...@@ -132,6 +132,7 @@ UnifiedMessageCenterBubble::~UnifiedMessageCenterBubble() {
bubble_widget_->RemoveObserver(this); bubble_widget_->RemoveObserver(this);
bubble_widget_->CloseNow(); bubble_widget_->CloseNow();
} }
CHECK(!views::WidgetObserver::IsInObserverList());
} }
int UnifiedMessageCenterBubble::CalculateAvailableHeight() { int UnifiedMessageCenterBubble::CalculateAvailableHeight() {
......
...@@ -81,6 +81,7 @@ PaletteWelcomeBubble::~PaletteWelcomeBubble() { ...@@ -81,6 +81,7 @@ PaletteWelcomeBubble::~PaletteWelcomeBubble() {
Shell::Get()->RemovePreTargetHandler(this); Shell::Get()->RemovePreTargetHandler(this);
} }
Shell::Get()->session_controller()->RemoveObserver(this); Shell::Get()->session_controller()->RemoveObserver(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
// static // static
......
...@@ -48,6 +48,7 @@ TrayBubbleWrapper::~TrayBubbleWrapper() { ...@@ -48,6 +48,7 @@ TrayBubbleWrapper::~TrayBubbleWrapper() {
bubble_widget_->RemoveObserver(this); bubble_widget_->RemoveObserver(this);
bubble_widget_->Close(); bubble_widget_->Close();
} }
CHECK(!IsInObserverList());
} }
TrayBackgroundView* TrayBubbleWrapper::GetTray() const { TrayBackgroundView* TrayBubbleWrapper::GetTray() const {
......
...@@ -128,6 +128,7 @@ UnifiedSystemTrayBubble::~UnifiedSystemTrayBubble() { ...@@ -128,6 +128,7 @@ UnifiedSystemTrayBubble::~UnifiedSystemTrayBubble() {
bubble_widget_->RemoveObserver(this); bubble_widget_->RemoveObserver(this);
bubble_widget_->Close(); bubble_widget_->Close();
} }
CHECK(!IsInObserverList());
} }
gfx::Rect UnifiedSystemTrayBubble::GetBoundsInScreen() const { gfx::Rect UnifiedSystemTrayBubble::GetBoundsInScreen() const {
......
...@@ -131,6 +131,7 @@ TouchHudRenderer::TouchHudRenderer(views::Widget* parent_widget) ...@@ -131,6 +131,7 @@ TouchHudRenderer::TouchHudRenderer(views::Widget* parent_widget)
TouchHudRenderer::~TouchHudRenderer() { TouchHudRenderer::~TouchHudRenderer() {
if (parent_widget_) if (parent_widget_)
parent_widget_->RemoveObserver(this); parent_widget_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void TouchHudRenderer::Clear() { void TouchHudRenderer::Clear() {
......
...@@ -59,6 +59,7 @@ TouchObserverHud::~TouchObserverHud() { ...@@ -59,6 +59,7 @@ TouchObserverHud::~TouchObserverHud() {
display::Screen::GetScreen()->RemoveObserver(this); display::Screen::GetScreen()->RemoveObserver(this);
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void TouchObserverHud::Remove() { void TouchObserverHud::Remove() {
......
...@@ -164,7 +164,7 @@ class AccessibilityPanelWidgetObserver : public views::WidgetObserver { ...@@ -164,7 +164,7 @@ class AccessibilityPanelWidgetObserver : public views::WidgetObserver {
widget_->AddObserver(this); widget_->AddObserver(this);
} }
~AccessibilityPanelWidgetObserver() override = default; ~AccessibilityPanelWidgetObserver() override { CHECK(!IsInObserverList()); }
void OnWidgetClosing(views::Widget* widget) override { void OnWidgetClosing(views::Widget* widget) override {
CHECK_EQ(widget_, widget); CHECK_EQ(widget_, widget);
......
...@@ -56,7 +56,9 @@ ForceCloseWatcher::ForceCloseWatcher(std::unique_ptr<Delegate> delegate) ...@@ -56,7 +56,9 @@ ForceCloseWatcher::ForceCloseWatcher(std::unique_ptr<Delegate> delegate)
delegate_->Watched(this); delegate_->Watched(this);
} }
ForceCloseWatcher::~ForceCloseWatcher() = default; ForceCloseWatcher::~ForceCloseWatcher() {
CHECK(!IsInObserverList());
}
ShellSurfaceForceCloseDelegate::ShellSurfaceForceCloseDelegate( ShellSurfaceForceCloseDelegate::ShellSurfaceForceCloseDelegate(
exo::ShellSurfaceBase* shell_surface, exo::ShellSurfaceBase* shell_surface,
...@@ -69,7 +71,9 @@ void ShellSurfaceForceCloseDelegate::ForceClose() { ...@@ -69,7 +71,9 @@ void ShellSurfaceForceCloseDelegate::ForceClose() {
GetClosableWidget()->CloseNow(); GetClosableWidget()->CloseNow();
} }
ShellSurfaceForceCloseDelegate::~ShellSurfaceForceCloseDelegate() = default; ShellSurfaceForceCloseDelegate::~ShellSurfaceForceCloseDelegate() {
CHECK(!IsInObserverList());
}
views::Widget* ShellSurfaceForceCloseDelegate::GetClosableWidget() { views::Widget* ShellSurfaceForceCloseDelegate::GetClosableWidget() {
DCHECK(shell_surface_->GetWidget()); DCHECK(shell_surface_->GetWidget());
......
...@@ -90,6 +90,7 @@ AssistiveWindowController::~AssistiveWindowController() { ...@@ -90,6 +90,7 @@ AssistiveWindowController::~AssistiveWindowController() {
suggestion_window_view_->GetWidget()->RemoveObserver(this); suggestion_window_view_->GetWidget()->RemoveObserver(this);
if (undo_window_ && undo_window_->GetWidget()) if (undo_window_ && undo_window_->GetWidget())
undo_window_->GetWidget()->RemoveObserver(this); undo_window_->GetWidget()->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void AssistiveWindowController::InitSuggestionWindow() { void AssistiveWindowController::InitSuggestionWindow() {
......
...@@ -32,6 +32,7 @@ CandidateWindowControllerImpl::~CandidateWindowControllerImpl() { ...@@ -32,6 +32,7 @@ CandidateWindowControllerImpl::~CandidateWindowControllerImpl() {
candidate_window_view_->RemoveObserver(this); candidate_window_view_->RemoveObserver(this);
candidate_window_view_->GetWidget()->RemoveObserver(this); candidate_window_view_->GetWidget()->RemoveObserver(this);
} }
CHECK(!IsInObserverList());
} }
void CandidateWindowControllerImpl::InitCandidateWindowView() { void CandidateWindowControllerImpl::InitCandidateWindowView() {
......
...@@ -42,6 +42,7 @@ class FirstAppRunToastManager::AppWidgetObserver ...@@ -42,6 +42,7 @@ class FirstAppRunToastManager::AppWidgetObserver
~AppWidgetObserver() override { ~AppWidgetObserver() override {
// This is a no-op of the observer was previously removed. // This is a no-op of the observer was previously removed.
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
// views::WidgetObserver: // views::WidgetObserver:
......
...@@ -70,11 +70,12 @@ CaptivePortalWindowProxy::CaptivePortalWindowProxy( ...@@ -70,11 +70,12 @@ CaptivePortalWindowProxy::CaptivePortalWindowProxy(
} }
CaptivePortalWindowProxy::~CaptivePortalWindowProxy() { CaptivePortalWindowProxy::~CaptivePortalWindowProxy() {
if (!widget_) if (widget_) {
return; DCHECK_EQ(STATE_DISPLAYED, GetState());
DCHECK_EQ(STATE_DISPLAYED, GetState()); widget_->RemoveObserver(this);
widget_->RemoveObserver(this); widget_->Close();
widget_->Close(); }
CHECK(!IsInObserverList());
} }
void CaptivePortalWindowProxy::ShowIfRedirected() { void CaptivePortalWindowProxy::ShowIfRedirected() {
......
...@@ -368,6 +368,7 @@ class CloseAfterCommit : public ui::CompositorObserver, ...@@ -368,6 +368,7 @@ class CloseAfterCommit : public ui::CompositorObserver,
~CloseAfterCommit() override { ~CloseAfterCommit() override {
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
widget_->GetCompositor()->RemoveObserver(this); widget_->GetCompositor()->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
// ui::CompositorObserver: // ui::CompositorObserver:
...@@ -487,6 +488,7 @@ LoginDisplayHostWebUI::~LoginDisplayHostWebUI() { ...@@ -487,6 +488,7 @@ LoginDisplayHostWebUI::~LoginDisplayHostWebUI() {
(new DriveFirstRunController(ProfileManager::GetActiveUserProfile())) (new DriveFirstRunController(ProfileManager::GetActiveUserProfile()))
->EnableOfflineMode(); ->EnableOfflineMode();
} }
CHECK(!views::WidgetObserver::IsInObserverList());
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
......
...@@ -52,6 +52,7 @@ IdleActionWarningObserver::~IdleActionWarningObserver() { ...@@ -52,6 +52,7 @@ IdleActionWarningObserver::~IdleActionWarningObserver() {
warning_dialog_->GetWidget()->RemoveObserver(this); warning_dialog_->GetWidget()->RemoveObserver(this);
warning_dialog_->CloseDialog(); warning_dialog_->CloseDialog();
} }
CHECK(!IsInObserverList());
} }
void IdleActionWarningObserver::IdleActionImminent( void IdleActionWarningObserver::IdleActionImminent(
......
...@@ -58,6 +58,7 @@ ChromeKeyboardBoundsObserver::~ChromeKeyboardBoundsObserver() { ...@@ -58,6 +58,7 @@ ChromeKeyboardBoundsObserver::~ChromeKeyboardBoundsObserver() {
RemoveAllObservedWindows(); RemoveAllObservedWindows();
ChromeKeyboardControllerClient::Get()->RemoveObserver(this); ChromeKeyboardControllerClient::Get()->RemoveObserver(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void ChromeKeyboardBoundsObserver::OnKeyboardOccludedBoundsChanged( void ChromeKeyboardBoundsObserver::OnKeyboardOccludedBoundsChanged(
......
...@@ -62,6 +62,7 @@ ExtensionAppWindowLauncherController::~ExtensionAppWindowLauncherController() { ...@@ -62,6 +62,7 @@ ExtensionAppWindowLauncherController::~ExtensionAppWindowLauncherController() {
DCHECK(widget); // Extension windows are always backed by Widgets. DCHECK(widget); // Extension windows are always backed by Widgets.
widget->RemoveObserver(this); widget->RemoveObserver(this);
} }
CHECK(!views::WidgetObserver::IsInObserverList());
} }
AppWindowLauncherItemController* AppWindowLauncherItemController*
......
...@@ -82,6 +82,8 @@ AutofillPopupBaseView::~AutofillPopupBaseView() { ...@@ -82,6 +82,8 @@ AutofillPopupBaseView::~AutofillPopupBaseView() {
RemoveWidgetObservers(); RemoveWidgetObservers();
} }
CHECK(!IsInObserverList());
} }
void AutofillPopupBaseView::DoShow() { void AutofillPopupBaseView::DoShow() {
......
...@@ -102,6 +102,7 @@ ExclusiveAccessBubbleViews::~ExclusiveAccessBubbleViews() { ...@@ -102,6 +102,7 @@ ExclusiveAccessBubbleViews::~ExclusiveAccessBubbleViews() {
// itself. // itself.
popup_->Close(); popup_->Close();
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, popup_); base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, popup_);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void ExclusiveAccessBubbleViews::UpdateContent( void ExclusiveAccessBubbleViews::UpdateContent(
......
...@@ -39,7 +39,9 @@ ExtensionsToolbarButton::ExtensionsToolbarButton( ...@@ -39,7 +39,9 @@ ExtensionsToolbarButton::ExtensionsToolbarButton(
GetViewAccessibility().OverrideHasPopup(ax::mojom::HasPopup::kMenu); GetViewAccessibility().OverrideHasPopup(ax::mojom::HasPopup::kMenu);
} }
ExtensionsToolbarButton::~ExtensionsToolbarButton() = default; ExtensionsToolbarButton::~ExtensionsToolbarButton() {
CHECK(!IsInObserverList());
}
void ExtensionsToolbarButton::UpdateIcon() { void ExtensionsToolbarButton::UpdateIcon() {
SetImage(views::Button::STATE_NORMAL, SetImage(views::Button::STATE_NORMAL,
......
...@@ -102,6 +102,7 @@ ExtensionsToolbarContainer::~ExtensionsToolbarContainer() { ...@@ -102,6 +102,7 @@ ExtensionsToolbarContainer::~ExtensionsToolbarContainer() {
// The widgets should close synchronously (resulting in OnWidgetClosing()), // The widgets should close synchronously (resulting in OnWidgetClosing()),
// so |anchored_widgets_| should now be empty. // so |anchored_widgets_| should now be empty.
DCHECK(anchored_widgets_.empty()); DCHECK(anchored_widgets_.empty());
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void ExtensionsToolbarContainer::UpdateAllIcons() { void ExtensionsToolbarContainer::UpdateAllIcons() {
......
...@@ -225,7 +225,9 @@ ImmersiveModeControllerMac::RevealedLock::~RevealedLock() { ...@@ -225,7 +225,9 @@ ImmersiveModeControllerMac::RevealedLock::~RevealedLock() {
ImmersiveModeControllerMac::ImmersiveModeControllerMac() ImmersiveModeControllerMac::ImmersiveModeControllerMac()
: weak_ptr_factory_(this) {} : weak_ptr_factory_(this) {}
ImmersiveModeControllerMac::~ImmersiveModeControllerMac() = default; ImmersiveModeControllerMac::~ImmersiveModeControllerMac() {
CHECK(!views::WidgetObserver::IsInObserverList());
}
void ImmersiveModeControllerMac::Init(BrowserView* browser_view) { void ImmersiveModeControllerMac::Init(BrowserView* browser_view) {
browser_view_ = browser_view; browser_view_ = browser_view;
......
...@@ -108,6 +108,7 @@ PermissionChip::PermissionChip(Browser* browser) ...@@ -108,6 +108,7 @@ PermissionChip::PermissionChip(Browser* browser)
PermissionChip::~PermissionChip() { PermissionChip::~PermissionChip() {
if (prompt_bubble_) if (prompt_bubble_)
prompt_bubble_->GetWidget()->Close(); prompt_bubble_->GetWidget()->Close();
CHECK(!IsInObserverList());
} }
void PermissionChip::Show(permissions::PermissionPrompt::Delegate* delegate) { void PermissionChip::Show(permissions::PermissionPrompt::Delegate* delegate) {
......
...@@ -41,6 +41,7 @@ WebContentsDisplayObserverView::~WebContentsDisplayObserverView() { ...@@ -41,6 +41,7 @@ WebContentsDisplayObserverView::~WebContentsDisplayObserverView() {
if (widget_) if (widget_)
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
BrowserList::RemoveObserver(this); BrowserList::RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void WebContentsDisplayObserverView::OnBrowserSetLastActive(Browser* browser) { void WebContentsDisplayObserverView::OnBrowserSetLastActive(Browser* browser) {
......
...@@ -254,6 +254,7 @@ MessageBoxDialog::MessageBoxDialog(const base::string16& title, ...@@ -254,6 +254,7 @@ MessageBoxDialog::MessageBoxDialog(const base::string16& title,
MessageBoxDialog::~MessageBoxDialog() { MessageBoxDialog::~MessageBoxDialog() {
GetWidget()->RemoveObserver(this); GetWidget()->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void MessageBoxDialog::Run(MessageBoxResultCallback result_callback) { void MessageBoxDialog::Run(MessageBoxResultCallback result_callback) {
......
...@@ -168,6 +168,7 @@ OmniboxPopupContentsView::~OmniboxPopupContentsView() { ...@@ -168,6 +168,7 @@ OmniboxPopupContentsView::~OmniboxPopupContentsView() {
// closed the window, in which case it's been deleted, or it will soon. // closed the window, in which case it's been deleted, or it will soon.
if (popup_) if (popup_)
popup_->RemoveObserver(this); popup_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void OmniboxPopupContentsView::OpenMatch( void OmniboxPopupContentsView::OpenMatch(
......
...@@ -83,6 +83,7 @@ PermissionPromptImpl::~PermissionPromptImpl() { ...@@ -83,6 +83,7 @@ PermissionPromptImpl::~PermissionPromptImpl() {
if (prompt_style_ == PromptStyle::kChip && permission_chip_) { if (prompt_style_ == PromptStyle::kChip && permission_chip_) {
permission_chip_->Hide(); permission_chip_->Hide();
} }
CHECK(!IsInObserverList());
} }
void PermissionPromptImpl::UpdateAnchorPosition() { void PermissionPromptImpl::UpdateAnchorPosition() {
......
...@@ -252,6 +252,7 @@ EnterpriseStartupDialogImpl::~EnterpriseStartupDialogImpl() { ...@@ -252,6 +252,7 @@ EnterpriseStartupDialogImpl::~EnterpriseStartupDialogImpl() {
dialog_view_->RemoveWidgetObserver(this); dialog_view_->RemoveWidgetObserver(this);
dialog_view_->CloseDialog(); dialog_view_->CloseDialog();
} }
CHECK(!IsInObserverList());
} }
void EnterpriseStartupDialogImpl::DisplayLaunchingInformationWithThrobber( void EnterpriseStartupDialogImpl::DisplayLaunchingInformationWithThrobber(
......
...@@ -57,6 +57,7 @@ RelaunchNotificationControllerPlatformImpl:: ...@@ -57,6 +57,7 @@ RelaunchNotificationControllerPlatformImpl::
DCHECK(!widget_); DCHECK(!widget_);
if (on_visible_) if (on_visible_)
BrowserList::RemoveObserver(this); BrowserList::RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void RelaunchNotificationControllerPlatformImpl::NotifyRelaunchRecommended( void RelaunchNotificationControllerPlatformImpl::NotifyRelaunchRecommended(
......
...@@ -421,6 +421,7 @@ TabDragController::~TabDragController() { ...@@ -421,6 +421,7 @@ TabDragController::~TabDragController() {
attached_context_ ? attached_context_ : source_context_; attached_context_ ? attached_context_ : source_context_;
capture_context->AsView()->GetWidget()->ReleaseCapture(); capture_context->AsView()->GetWidget()->ReleaseCapture();
} }
CHECK(!IsInObserverList());
} }
void TabDragController::Init(TabDragContext* source_context, void TabDragController::Init(TabDragContext* source_context,
......
...@@ -396,6 +396,7 @@ TabGroupHeader::EditorBubbleTracker::~EditorBubbleTracker() { ...@@ -396,6 +396,7 @@ TabGroupHeader::EditorBubbleTracker::~EditorBubbleTracker() {
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
widget_->CloseWithReason(views::Widget::ClosedReason::kUnspecified); widget_->CloseWithReason(views::Widget::ClosedReason::kUnspecified);
} }
CHECK(!IsInObserverList());
} }
void TabGroupHeader::EditorBubbleTracker::Opened(views::Widget* bubble_widget) { void TabGroupHeader::EditorBubbleTracker::Opened(views::Widget* bubble_widget) {
......
...@@ -1015,6 +1015,8 @@ TabStrip::~TabStrip() { ...@@ -1015,6 +1015,8 @@ TabStrip::~TabStrip() {
// The child tabs may call back to us from their destructors. Delete them so // The child tabs may call back to us from their destructors. Delete them so
// that if they call back we aren't in a weird state. // that if they call back we aren't in a weird state.
RemoveAllChildViews(true); RemoveAllChildViews(true);
CHECK(!IsInObserverList());
} }
void TabStrip::SetAvailableWidthCallback( void TabStrip::SetAvailableWidthCallback(
......
...@@ -118,6 +118,7 @@ BrowserActionsContainer::~BrowserActionsContainer() { ...@@ -118,6 +118,7 @@ BrowserActionsContainer::~BrowserActionsContainer() {
toolbar_actions_bar_->DeleteActions(); toolbar_actions_bar_->DeleteActions();
// All views should be removed as part of ToolbarActionsBar::DeleteActions(). // All views should be removed as part of ToolbarActionsBar::DeleteActions().
DCHECK(toolbar_action_views_.empty()); DCHECK(toolbar_action_views_.empty());
CHECK(!IsInObserverList());
} }
std::string BrowserActionsContainer::GetIdAt(size_t index) const { std::string BrowserActionsContainer::GetIdAt(size_t index) const {
......
...@@ -309,6 +309,8 @@ class TryChromeDialog::Context { ...@@ -309,6 +309,8 @@ class TryChromeDialog::Context {
static std::unique_ptr<TaskbarCalculator> Create(Location location); static std::unique_ptr<TaskbarCalculator> Create(Location location);
~TaskbarCalculator() override { CHECK(!IsInObserverList()); }
// DialogCalculator: // DialogCalculator:
void AddBorderToContents(views::Widget* popup, void AddBorderToContents(views::Widget* popup,
views::View* contents_view) override; views::View* contents_view) override;
...@@ -1001,6 +1003,7 @@ TryChromeDialog::TryChromeDialog(size_t group, Delegate* delegate) ...@@ -1001,6 +1003,7 @@ TryChromeDialog::TryChromeDialog(size_t group, Delegate* delegate)
TryChromeDialog::~TryChromeDialog() { TryChromeDialog::~TryChromeDialog() {
DCHECK_CALLED_ON_VALID_SEQUENCE(my_sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(my_sequence_checker_);
CHECK(!IsInObserverList());
} }
void TryChromeDialog::ShowDialogAsync() { void TryChromeDialog::ShowDialogAsync() {
......
...@@ -29,6 +29,7 @@ FocusRingController::FocusRingController( ...@@ -29,6 +29,7 @@ FocusRingController::FocusRingController(
FocusRingController::~FocusRingController() { FocusRingController::~FocusRingController() {
SetVisible(false); SetVisible(false);
CHECK(!IsInObserverList());
} }
void FocusRingController::SetVisible(bool visible) { void FocusRingController::SetVisible(bool visible) {
......
...@@ -202,6 +202,7 @@ PartialMagnificationController::PartialMagnificationController( ...@@ -202,6 +202,7 @@ PartialMagnificationController::PartialMagnificationController(
PartialMagnificationController::~PartialMagnificationController() { PartialMagnificationController::~PartialMagnificationController() {
CloseMagnifierWindow(); CloseMagnifierWindow();
root_window_->RemovePreTargetHandler(this); root_window_->RemovePreTargetHandler(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void PartialMagnificationController::SetEnabled(bool enabled) { void PartialMagnificationController::SetEnabled(bool enabled) {
......
...@@ -66,6 +66,7 @@ class WidgetModalDialogHostObserverViews ...@@ -66,6 +66,7 @@ class WidgetModalDialogHostObserverViews
host_->RemoveObserver(this); host_->RemoveObserver(this);
target_widget_->RemoveObserver(this); target_widget_->RemoveObserver(this);
target_widget_->SetNativeWindowProperty(native_window_property_, nullptr); target_widget_->SetNativeWindowProperty(native_window_property_, nullptr);
CHECK(!IsInObserverList());
} }
// WidgetObserver overrides // WidgetObserver overrides
......
...@@ -50,6 +50,7 @@ NativeWebContentsModalDialogManagerViews:: ...@@ -50,6 +50,7 @@ NativeWebContentsModalDialogManagerViews::
for (auto* widget : observed_widgets_) for (auto* widget : observed_widgets_)
widget->RemoveObserver(this); widget->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void NativeWebContentsModalDialogManagerViews::ManageDialog() { void NativeWebContentsModalDialogManagerViews::ManageDialog() {
......
...@@ -337,6 +337,7 @@ ShellSurfaceBase::~ShellSurfaceBase() { ...@@ -337,6 +337,7 @@ ShellSurfaceBase::~ShellSurfaceBase() {
root_surface()->RemoveSurfaceObserver(this); root_surface()->RemoveSurfaceObserver(this);
if (has_grab_) if (has_grab_)
WMHelper::GetInstance()->GetCaptureClient()->RemoveObserver(this); WMHelper::GetInstance()->GetCaptureClient()->RemoveObserver(this);
CHECK(!views::WidgetObserver::IsInObserverList());
} }
void ShellSurfaceBase::Activate() { void ShellSurfaceBase::Activate() {
......
...@@ -12,7 +12,10 @@ ...@@ -12,7 +12,10 @@
namespace ui_devtools { namespace ui_devtools {
DOMAgentMac::DOMAgentMac() {} DOMAgentMac::DOMAgentMac() {}
DOMAgentMac::~DOMAgentMac() {}
DOMAgentMac::~DOMAgentMac() {
CHECK(!IsInObserverList());
}
protocol::Response DOMAgentMac::enable() { protocol::Response DOMAgentMac::enable() {
views::NativeWidgetMac::SetInitNativeWidgetCallback(base::BindRepeating( views::NativeWidgetMac::SetInitNativeWidgetCallback(base::BindRepeating(
......
...@@ -17,6 +17,7 @@ OverlayAgentMac::OverlayAgentMac(DOMAgent* dom_agent) ...@@ -17,6 +17,7 @@ OverlayAgentMac::OverlayAgentMac(DOMAgent* dom_agent)
OverlayAgentMac::~OverlayAgentMac() { OverlayAgentMac::~OverlayAgentMac() {
if (is_pretarget_handler_) if (is_pretarget_handler_)
RemovePreTargetHandler(); RemovePreTargetHandler();
CHECK(!IsInObserverList());
} }
void OverlayAgentMac::InstallPreTargetHandler() { void OverlayAgentMac::InstallPreTargetHandler() {
......
...@@ -23,6 +23,7 @@ WidgetElement::~WidgetElement() { ...@@ -23,6 +23,7 @@ WidgetElement::~WidgetElement() {
widget_->RemoveRemovalsObserver(this); widget_->RemoveRemovalsObserver(this);
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
} }
CHECK(!IsInObserverList());
} }
void WidgetElement::OnWillRemoveView(views::Widget* widget, views::View* view) { void WidgetElement::OnWillRemoveView(views::Widget* widget, views::View* view) {
......
...@@ -50,6 +50,7 @@ void NativeAppWindowViews::Init( ...@@ -50,6 +50,7 @@ void NativeAppWindowViews::Init(
NativeAppWindowViews::~NativeAppWindowViews() { NativeAppWindowViews::~NativeAppWindowViews() {
web_view_->SetWebContents(nullptr); web_view_->SetWebContents(nullptr);
CHECK(!IsInObserverList());
} }
void NativeAppWindowViews::OnCanHaveAlphaEnabledChanged() { void NativeAppWindowViews::OnCanHaveAlphaEnabledChanged() {
......
...@@ -23,6 +23,7 @@ CompositorAnimationRunner::~CompositorAnimationRunner() { ...@@ -23,6 +23,7 @@ CompositorAnimationRunner::~CompositorAnimationRunner() {
if (widget_) if (widget_)
OnWidgetDestroying(widget_); OnWidgetDestroying(widget_);
DCHECK(!compositor_ || !compositor_->HasAnimationObserver(this)); DCHECK(!compositor_ || !compositor_->HasAnimationObserver(this));
CHECK(!IsInObserverList());
} }
void CompositorAnimationRunner::SetAnimationMetricsReporter( void CompositorAnimationRunner::SetAnimationMetricsReporter(
......
...@@ -56,6 +56,7 @@ Button::WidgetObserverButtonBridge::WidgetObserverButtonBridge(Button* button) ...@@ -56,6 +56,7 @@ Button::WidgetObserverButtonBridge::WidgetObserverButtonBridge(Button* button)
Button::WidgetObserverButtonBridge::~WidgetObserverButtonBridge() { Button::WidgetObserverButtonBridge::~WidgetObserverButtonBridge() {
if (owner_) if (owner_)
owner_->GetWidget()->RemoveObserver(this); owner_->GetWidget()->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void Button::WidgetObserverButtonBridge::OnWidgetPaintAsActiveChanged( void Button::WidgetObserverButtonBridge::OnWidgetPaintAsActiveChanged(
......
...@@ -1635,6 +1635,7 @@ MenuController::~MenuController() { ...@@ -1635,6 +1635,7 @@ MenuController::~MenuController() {
active_instance_ = nullptr; active_instance_ = nullptr;
StopShowTimer(); StopShowTimer();
StopCancelAllTimer(); StopCancelAllTimer();
CHECK(!IsInObserverList());
} }
bool MenuController::SendAcceleratorToHotTrackedView() { bool MenuController::SendAcceleratorToHotTrackedView() {
......
...@@ -103,6 +103,7 @@ MenuHost::MenuHost(SubmenuView* submenu) ...@@ -103,6 +103,7 @@ MenuHost::MenuHost(SubmenuView* submenu)
MenuHost::~MenuHost() { MenuHost::~MenuHost() {
if (owner_) if (owner_)
owner_->RemoveObserver(this); owner_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void MenuHost::InitMenuHost(Widget* parent, void MenuHost::InitMenuHost(Widget* parent,
......
...@@ -158,6 +158,7 @@ namespace corewm { ...@@ -158,6 +158,7 @@ namespace corewm {
TooltipAura::~TooltipAura() { TooltipAura::~TooltipAura() {
DestroyWidget(); DestroyWidget();
CHECK(!IsInObserverList());
} }
class TooltipAura::TooltipWidget : public Widget { class TooltipAura::TooltipWidget : public Widget {
......
...@@ -17,6 +17,7 @@ TestWidgetObserver::TestWidgetObserver(Widget* widget) : widget_(widget) { ...@@ -17,6 +17,7 @@ TestWidgetObserver::TestWidgetObserver(Widget* widget) : widget_(widget) {
TestWidgetObserver::~TestWidgetObserver() { TestWidgetObserver::~TestWidgetObserver() {
if (widget_) if (widget_)
widget_->RemoveObserver(this); widget_->RemoveObserver(this);
CHECK(!IsInObserverList());
} }
void TestWidgetObserver::OnWidgetDestroying(Widget* widget) { void TestWidgetObserver::OnWidgetDestroying(Widget* widget) {
......
...@@ -402,6 +402,7 @@ TouchSelectionControllerImpl::~TouchSelectionControllerImpl() { ...@@ -402,6 +402,7 @@ TouchSelectionControllerImpl::~TouchSelectionControllerImpl() {
selection_handle_1_->CloseHandleWidget(); selection_handle_1_->CloseHandleWidget();
selection_handle_2_->CloseHandleWidget(); selection_handle_2_->CloseHandleWidget();
cursor_handle_->CloseHandleWidget(); cursor_handle_->CloseHandleWidget();
CHECK(!IsInObserverList());
} }
void TouchSelectionControllerImpl::SelectionChanged() { void TouchSelectionControllerImpl::SelectionChanged() {
......
...@@ -16,6 +16,7 @@ WidgetDeletionObserver::WidgetDeletionObserver(Widget* widget) ...@@ -16,6 +16,7 @@ WidgetDeletionObserver::WidgetDeletionObserver(Widget* widget)
WidgetDeletionObserver::~WidgetDeletionObserver() { WidgetDeletionObserver::~WidgetDeletionObserver() {
CleanupWidget(); CleanupWidget();
CHECK(!IsInObserverList());
} }
void WidgetDeletionObserver::OnWidgetDestroying(Widget* widget) { void WidgetDeletionObserver::OnWidgetDestroying(Widget* widget) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment