Commit 260e4e44 authored by jongdeok.kim's avatar jongdeok.kim Committed by Commit Bot

Use ScopedObserver where feasible in ui/views/accessibility, and view_tracker.{h,cc}.

This CL changes some classes in ui/views/accessibility/ and view_tracker.{h,cc} to use ScopedObserver.

Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=940796
Change-Id: Iee16691098fae2e3cba4f11a9d970181ca28f659
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1558558
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714983}
parent d1ff082a
...@@ -56,14 +56,14 @@ bool ChromeWebContentsViewFocusHelper::TakeFocus(bool reverse) { ...@@ -56,14 +56,14 @@ bool ChromeWebContentsViewFocusHelper::TakeFocus(bool reverse) {
} }
void ChromeWebContentsViewFocusHelper::StoreFocus() { void ChromeWebContentsViewFocusHelper::StoreFocus() {
last_focused_view_tracker_.Clear(); last_focused_view_tracker_.SetView(nullptr);
if (GetFocusManager()) if (GetFocusManager())
last_focused_view_tracker_.SetView(GetFocusManager()->GetFocusedView()); last_focused_view_tracker_.SetView(GetFocusManager()->GetFocusedView());
} }
bool ChromeWebContentsViewFocusHelper::RestoreFocus() { bool ChromeWebContentsViewFocusHelper::RestoreFocus() {
views::View* view_to_focus = GetStoredFocus(); views::View* view_to_focus = GetStoredFocus();
last_focused_view_tracker_.Clear(); last_focused_view_tracker_.SetView(nullptr);
if (view_to_focus) { if (view_to_focus) {
view_to_focus->RequestFocus(); view_to_focus->RequestFocus();
return true; return true;
...@@ -72,7 +72,7 @@ bool ChromeWebContentsViewFocusHelper::RestoreFocus() { ...@@ -72,7 +72,7 @@ bool ChromeWebContentsViewFocusHelper::RestoreFocus() {
} }
void ChromeWebContentsViewFocusHelper::ResetStoredFocus() { void ChromeWebContentsViewFocusHelper::ResetStoredFocus() {
last_focused_view_tracker_.Clear(); last_focused_view_tracker_.SetView(nullptr);
} }
views::View* ChromeWebContentsViewFocusHelper::GetStoredFocus() { views::View* ChromeWebContentsViewFocusHelper::GetStoredFocus() {
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "ui/accessibility/platform/aura_window_properties.h" #include "ui/accessibility/platform/aura_window_properties.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/compositor/layer_type.h" #include "ui/compositor/layer_type.h"
#include "ui/views/accessibility/ax_aura_obj_cache.h" #include "ui/views/accessibility/ax_aura_obj_cache.h"
...@@ -24,12 +23,10 @@ AccessibilityAlertWindow::AccessibilityAlertWindow(aura::Window* parent, ...@@ -24,12 +23,10 @@ AccessibilityAlertWindow::AccessibilityAlertWindow(aura::Window* parent,
alert_window_->Init(ui::LayerType::LAYER_NOT_DRAWN); alert_window_->Init(ui::LayerType::LAYER_NOT_DRAWN);
alert_window_->SetProperty(ui::kAXRoleOverride, ax::mojom::Role::kAlert); alert_window_->SetProperty(ui::kAXRoleOverride, ax::mojom::Role::kAlert);
parent->AddChild(alert_window_.get()); parent->AddChild(alert_window_.get());
aura::Env::GetInstance()->AddObserver(this); observer_.Add(aura::Env::GetInstance());
} }
AccessibilityAlertWindow::~AccessibilityAlertWindow() { AccessibilityAlertWindow::~AccessibilityAlertWindow() = default;
aura::Env::GetInstance()->RemoveObserver(this);
}
void AccessibilityAlertWindow::HandleAlert(const std::string& alert_string) { void AccessibilityAlertWindow::HandleAlert(const std::string& alert_string) {
if (!alert_window_->parent()) if (!alert_window_->parent())
...@@ -40,10 +37,8 @@ void AccessibilityAlertWindow::HandleAlert(const std::string& alert_string) { ...@@ -40,10 +37,8 @@ void AccessibilityAlertWindow::HandleAlert(const std::string& alert_string) {
ax::mojom::Event::kAlert); ax::mojom::Event::kAlert);
} }
void AccessibilityAlertWindow::OnWindowInitialized(aura::Window* window) {}
void AccessibilityAlertWindow::OnWillDestroyEnv() { void AccessibilityAlertWindow::OnWillDestroyEnv() {
observer_.RemoveAll();
alert_window_.reset(); alert_window_.reset();
} }
} // namespace views } // namespace views
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include "base/scoped_observer.h"
#include "ui/aura/env.h"
#include "ui/aura/env_observer.h" #include "ui/aura/env_observer.h"
#include "ui/views/views_export.h" #include "ui/views/views_export.h"
...@@ -34,7 +36,6 @@ class VIEWS_EXPORT AccessibilityAlertWindow : public aura::EnvObserver { ...@@ -34,7 +36,6 @@ class VIEWS_EXPORT AccessibilityAlertWindow : public aura::EnvObserver {
private: private:
// aura::EnvObserver: // aura::EnvObserver:
void OnWindowInitialized(aura::Window* window) override;
void OnWillDestroyEnv() override; void OnWillDestroyEnv() override;
// The child alert window. // The child alert window.
...@@ -42,6 +43,8 @@ class VIEWS_EXPORT AccessibilityAlertWindow : public aura::EnvObserver { ...@@ -42,6 +43,8 @@ class VIEWS_EXPORT AccessibilityAlertWindow : public aura::EnvObserver {
// The accessibility cache associated with |alert_window_|. // The accessibility cache associated with |alert_window_|.
views::AXAuraObjCache* cache_; views::AXAuraObjCache* cache_;
ScopedObserver<aura::Env, aura::EnvObserver> observer_{this};
}; };
} // namespace views } // namespace views
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include "ui/views/accessibility/ax_aura_obj_cache.h" #include "ui/views/accessibility/ax_aura_obj_cache.h"
#include "ui/views/accessibility/ax_virtual_view.h" #include "ui/views/accessibility/ax_virtual_view.h"
#include "ui/views/accessibility/view_accessibility.h" #include "ui/views/accessibility/view_accessibility.h"
#include "ui/views/view.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
namespace views { namespace views {
...@@ -19,15 +18,10 @@ AXViewObjWrapper::AXViewObjWrapper(AXAuraObjCache* aura_obj_cache, View* view) ...@@ -19,15 +18,10 @@ AXViewObjWrapper::AXViewObjWrapper(AXAuraObjCache* aura_obj_cache, View* view)
: AXAuraObjWrapper(aura_obj_cache), view_(view) { : AXAuraObjWrapper(aura_obj_cache), view_(view) {
if (view->GetWidget()) if (view->GetWidget())
aura_obj_cache_->GetOrCreate(view->GetWidget()); aura_obj_cache_->GetOrCreate(view->GetWidget());
view->AddObserver(this); observer_.Add(view);
} }
AXViewObjWrapper::~AXViewObjWrapper() { AXViewObjWrapper::~AXViewObjWrapper() = default;
if (view_) {
view_->RemoveObserver(this);
view_ = nullptr;
}
}
bool AXViewObjWrapper::IsIgnored() { bool AXViewObjWrapper::IsIgnored() {
return view_ ? view_->GetViewAccessibility().IsIgnored() : true; return view_ ? view_->GetViewAccessibility().IsIgnored() : true;
...@@ -97,6 +91,7 @@ bool AXViewObjWrapper::HandleAccessibleAction(const ui::AXActionData& action) { ...@@ -97,6 +91,7 @@ bool AXViewObjWrapper::HandleAccessibleAction(const ui::AXActionData& action) {
} }
void AXViewObjWrapper::OnViewIsDeleting(View* observed_view) { void AXViewObjWrapper::OnViewIsDeleting(View* observed_view) {
observer_.RemoveAll();
view_ = nullptr; view_ = nullptr;
} }
......
...@@ -7,12 +7,13 @@ ...@@ -7,12 +7,13 @@
#include <stdint.h> #include <stdint.h>
#include "base/scoped_observer.h"
#include "ui/views/accessibility/ax_aura_obj_wrapper.h" #include "ui/views/accessibility/ax_aura_obj_wrapper.h"
#include "ui/views/view.h"
#include "ui/views/view_observer.h" #include "ui/views/view_observer.h"
namespace views { namespace views {
class AXAuraObjCache; class AXAuraObjCache;
class View;
// Describes a |View| for use with other AX classes. // Describes a |View| for use with other AX classes.
class AXViewObjWrapper : public AXAuraObjWrapper, public ViewObserver { class AXViewObjWrapper : public AXAuraObjWrapper, public ViewObserver {
...@@ -38,6 +39,8 @@ class AXViewObjWrapper : public AXAuraObjWrapper, public ViewObserver { ...@@ -38,6 +39,8 @@ class AXViewObjWrapper : public AXAuraObjWrapper, public ViewObserver {
private: private:
View* view_; View* view_;
ScopedObserver<View, ViewObserver> observer_{this};
}; };
} // namespace views } // namespace views
......
...@@ -4,12 +4,13 @@ ...@@ -4,12 +4,13 @@
#include "ui/views/accessibility/ax_widget_obj_wrapper.h" #include "ui/views/accessibility/ax_widget_obj_wrapper.h"
#include <vector>
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_enums.mojom.h"
#include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_node_data.h"
#include "ui/views/accessibility/ax_aura_obj_cache.h" #include "ui/views/accessibility/ax_aura_obj_cache.h"
#include "ui/views/accessibility/ax_aura_obj_wrapper.h" #include "ui/views/accessibility/ax_aura_obj_wrapper.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h" #include "ui/views/widget/widget_delegate.h"
namespace views { namespace views {
...@@ -17,12 +18,11 @@ namespace views { ...@@ -17,12 +18,11 @@ namespace views {
AXWidgetObjWrapper::AXWidgetObjWrapper(AXAuraObjCache* aura_obj_cache, AXWidgetObjWrapper::AXWidgetObjWrapper(AXAuraObjCache* aura_obj_cache,
Widget* widget) Widget* widget)
: AXAuraObjWrapper(aura_obj_cache), widget_(widget) { : AXAuraObjWrapper(aura_obj_cache), widget_(widget) {
widget->AddObserver(this); widget_observer_.Add(widget);
widget->AddRemovalsObserver(this); widget->AddRemovalsObserver(this);
} }
AXWidgetObjWrapper::~AXWidgetObjWrapper() { AXWidgetObjWrapper::~AXWidgetObjWrapper() {
widget_->RemoveObserver(this);
widget_->RemoveRemovalsObserver(this); widget_->RemoveRemovalsObserver(this);
} }
......
...@@ -7,14 +7,15 @@ ...@@ -7,14 +7,15 @@
#include <stdint.h> #include <stdint.h>
#include "base/scoped_observer.h"
#include "ui/accessibility/platform/ax_unique_id.h" #include "ui/accessibility/platform/ax_unique_id.h"
#include "ui/views/accessibility/ax_aura_obj_wrapper.h" #include "ui/views/accessibility/ax_aura_obj_wrapper.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_observer.h" #include "ui/views/widget/widget_observer.h"
#include "ui/views/widget/widget_removals_observer.h" #include "ui/views/widget/widget_removals_observer.h"
namespace views { namespace views {
class AXAuraObjCache; class AXAuraObjCache;
class Widget;
// Describes a |Widget| for use with other AX classes. // Describes a |Widget| for use with other AX classes.
class AXWidgetObjWrapper : public AXAuraObjWrapper, class AXWidgetObjWrapper : public AXAuraObjWrapper,
...@@ -46,6 +47,8 @@ class AXWidgetObjWrapper : public AXAuraObjWrapper, ...@@ -46,6 +47,8 @@ class AXWidgetObjWrapper : public AXAuraObjWrapper,
Widget* widget_; Widget* widget_;
const ui::AXUniqueId unique_id_; const ui::AXUniqueId unique_id_;
ScopedObserver<Widget, WidgetObserver> widget_observer_{this};
}; };
} // namespace views } // namespace views
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/ax_tree_id.h"
#include "ui/accessibility/platform/aura_window_properties.h" #include "ui/accessibility/platform/aura_window_properties.h"
#include "ui/aura/client/focus_client.h" #include "ui/aura/client/focus_client.h"
#include "ui/aura/window.h"
#include "ui/views/accessibility/ax_aura_obj_cache.h" #include "ui/views/accessibility/ax_aura_obj_cache.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
...@@ -66,15 +65,13 @@ AXWindowObjWrapper::AXWindowObjWrapper(AXAuraObjCache* aura_obj_cache, ...@@ -66,15 +65,13 @@ AXWindowObjWrapper::AXWindowObjWrapper(AXAuraObjCache* aura_obj_cache,
: AXAuraObjWrapper(aura_obj_cache), : AXAuraObjWrapper(aura_obj_cache),
window_(window), window_(window),
is_root_window_(window->IsRootWindow()) { is_root_window_(window->IsRootWindow()) {
window->AddObserver(this); observer_.Add(window);
if (is_root_window_) if (is_root_window_)
aura_obj_cache_->OnRootWindowObjCreated(window); aura_obj_cache_->OnRootWindowObjCreated(window);
} }
AXWindowObjWrapper::~AXWindowObjWrapper() { AXWindowObjWrapper::~AXWindowObjWrapper() = default;
window_->RemoveObserver(this);
}
bool AXWindowObjWrapper::IsIgnored() { bool AXWindowObjWrapper::IsIgnored() {
return false; return false;
......
...@@ -7,15 +7,13 @@ ...@@ -7,15 +7,13 @@
#include <stdint.h> #include <stdint.h>
#include "base/scoped_observer.h"
#include "ui/accessibility/ax_enums.mojom-forward.h" #include "ui/accessibility/ax_enums.mojom-forward.h"
#include "ui/accessibility/platform/ax_unique_id.h" #include "ui/accessibility/platform/ax_unique_id.h"
#include "ui/aura/window.h"
#include "ui/aura/window_observer.h" #include "ui/aura/window_observer.h"
#include "ui/views/accessibility/ax_aura_obj_wrapper.h" #include "ui/views/accessibility/ax_aura_obj_wrapper.h"
namespace aura {
class Window;
} // namespace aura
namespace views { namespace views {
class AXAuraObjCache; class AXAuraObjCache;
...@@ -61,6 +59,8 @@ class AXWindowObjWrapper : public AXAuraObjWrapper, ...@@ -61,6 +59,8 @@ class AXWindowObjWrapper : public AXAuraObjWrapper,
bool is_root_window_; bool is_root_window_;
const ui::AXUniqueId unique_id_; const ui::AXUniqueId unique_id_;
ScopedObserver<aura::Window, aura::WindowObserver> observer_{this};
}; };
} // namespace views } // namespace views
......
...@@ -2914,7 +2914,7 @@ void MenuController::SendMouseReleaseToActiveView(SubmenuView* event_source, ...@@ -2914,7 +2914,7 @@ void MenuController::SendMouseReleaseToActiveView(SubmenuView* event_source,
event.changed_button_flags()); event.changed_button_flags());
// Reset the active mouse view before sending mouse released. That way if it // Reset the active mouse view before sending mouse released. That way if it
// calls back to us, we aren't in a weird state. // calls back to us, we aren't in a weird state.
active_mouse_view_tracker_->Clear(); active_mouse_view_tracker_->SetView(nullptr);
active_mouse_view->OnMouseReleased(release_event); active_mouse_view->OnMouseReleased(release_event);
} }
...@@ -2925,7 +2925,7 @@ void MenuController::SendMouseCaptureLostToActiveView() { ...@@ -2925,7 +2925,7 @@ void MenuController::SendMouseCaptureLostToActiveView() {
// Reset the active mouse view before sending mouse capture lost. That way if // Reset the active mouse view before sending mouse capture lost. That way if
// it calls back to us, we aren't in a weird state. // it calls back to us, we aren't in a weird state.
active_mouse_view_tracker_->Clear(); active_mouse_view_tracker_->SetView(nullptr);
active_mouse_view->OnMouseCaptureLost(); active_mouse_view->OnMouseCaptureLost();
} }
......
...@@ -4,27 +4,22 @@ ...@@ -4,27 +4,22 @@
#include "ui/views/view_tracker.h" #include "ui/views/view_tracker.h"
#include "ui/views/view.h"
namespace views { namespace views {
ViewTracker::ViewTracker(View* view) { ViewTracker::ViewTracker(View* view) {
SetView(view); SetView(view);
} }
ViewTracker::~ViewTracker() { ViewTracker::~ViewTracker() = default;
SetView(nullptr);
}
void ViewTracker::SetView(View* view) { void ViewTracker::SetView(View* view) {
if (view == view_) if (view == view_)
return; return;
if (view_) observer_.RemoveAll();
view_->RemoveObserver(this);
view_ = view; view_ = view;
if (view_) if (view_)
view_->AddObserver(this); observer_.Add(view_);
} }
void ViewTracker::OnViewIsDeleting(View* observed_view) { void ViewTracker::OnViewIsDeleting(View* observed_view) {
......
...@@ -5,20 +5,21 @@ ...@@ -5,20 +5,21 @@
#ifndef UI_VIEWS_VIEW_TRACKER_H_ #ifndef UI_VIEWS_VIEW_TRACKER_H_
#define UI_VIEWS_VIEW_TRACKER_H_ #define UI_VIEWS_VIEW_TRACKER_H_
#include "base/macros.h" #include "base/scoped_observer.h"
#include "ui/views/view.h"
#include "ui/views/view_observer.h" #include "ui/views/view_observer.h"
#include "ui/views/views_export.h" #include "ui/views/views_export.h"
namespace views { namespace views {
// ViewTracker tracks a single View. When the View is deleted it's removed. // ViewTracker tracks a single View. When the View is deleted it's removed.
class VIEWS_EXPORT ViewTracker : public ViewObserver { class VIEWS_EXPORT ViewTracker : public ViewObserver {
public: public:
explicit ViewTracker(View* view = nullptr); explicit ViewTracker(View* view = nullptr);
ViewTracker(const ViewTracker&) = delete;
ViewTracker& operator=(const ViewTracker&) = delete;
~ViewTracker() override; ~ViewTracker() override;
void SetView(View* view); void SetView(View* view);
void Clear() { SetView(nullptr); }
View* view() { return view_; } View* view() { return view_; }
// ViewObserver: // ViewObserver:
...@@ -27,7 +28,7 @@ class VIEWS_EXPORT ViewTracker : public ViewObserver { ...@@ -27,7 +28,7 @@ class VIEWS_EXPORT ViewTracker : public ViewObserver {
private: private:
View* view_ = nullptr; View* view_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(ViewTracker); ScopedObserver<View, ViewObserver> observer_{this};
}; };
} // namespace views } // namespace views
......
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