| Index: ui/views/widget/widget.cc | 
| diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc | 
| index 6063a224684cb38ec980a29621197060167065c1..7e9fdb64bb125b795fab8b11f00478828d40a9cd 100644 | 
| --- a/ui/views/widget/widget.cc | 
| +++ b/ui/views/widget/widget.cc | 
| @@ -4,6 +4,7 @@ | 
|  | 
| #include "ui/views/widget/widget.h" | 
|  | 
| +#include "base/auto_reset.h" | 
| #include "base/logging.h" | 
| #include "base/macros.h" | 
| #include "base/message_loop/message_loop.h" | 
| @@ -174,7 +175,8 @@ Widget::Widget() | 
| auto_release_capture_(true), | 
| views_with_layers_dirty_(false), | 
| movement_disabled_(false), | 
| -      observer_manager_(this) {} | 
| +      observer_manager_(this), | 
| +      processing_theme_changed_(false) {} | 
|  | 
| Widget::~Widget() { | 
| DestroyRootView(); | 
| @@ -898,6 +900,8 @@ void Widget::DebugToggleFrameType() { | 
| } | 
|  | 
| void Widget::FrameTypeChanged() { | 
| +  if (processing_theme_changed_) | 
| +    return; | 
| native_widget_->FrameTypeChanged(); | 
| } | 
|  | 
| @@ -1401,6 +1405,10 @@ void Widget::OnNativeThemeUpdated(ui::NativeTheme* observed_theme) { | 
| observer_manager_.Add(current_native_theme); | 
| } | 
|  | 
| +  DCHECK_EQ(processing_theme_changed_, false); | 
| + | 
| +  base::AutoReset<bool> auto_theme_changed_recursion_break( | 
| +      &processing_theme_changed_, true); | 
| root_view_->PropagateNativeThemeChanged(current_native_theme); | 
| } | 
|  | 
|  |