Commit 8712347b authored by Zach Helfinstein's avatar Zach Helfinstein Committed by Commit Bot

Generalize ChromeVoxPanelWidgetObserver to AccessibilityPanelWidgetObserver

This change is in preparation for creating the Switch Access context
menu, which will behave similarly to the ChromeVox Panel.

This is a pure refactor with no functional changes.

Bug: 864796
Change-Id: I53c34722b97acca482514132c84894c89171c2a2
Reviewed-on: https://chromium-review.googlesource.com/1144308
Commit-Queue: Zach Helfinstein <zhelfins@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577278}
parent 5557e278
......@@ -116,35 +116,36 @@ BrailleController* GetBrailleController() {
} // namespace
class ChromeVoxPanelWidgetObserver : public views::WidgetObserver {
class AccessibilityPanelWidgetObserver : public views::WidgetObserver {
public:
ChromeVoxPanelWidgetObserver(views::Widget* widget,
AccessibilityManager* manager)
: widget_(widget), manager_(manager) {
AccessibilityPanelWidgetObserver(views::Widget* widget,
base::OnceCallback<void()> on_destroying)
: widget_(widget), on_destroying_(std::move(on_destroying)) {
widget_->AddObserver(this);
}
~ChromeVoxPanelWidgetObserver() override = default;
~AccessibilityPanelWidgetObserver() override = default;
void OnWidgetClosing(views::Widget* widget) override {
CHECK_EQ(widget_, widget);
widget->RemoveObserver(this);
manager_->OnChromeVoxPanelClosing();
// |this| is deleted.
std::move(on_destroying_).Run();
// |this| should be deleted.
}
void OnWidgetDestroying(views::Widget* widget) override {
CHECK_EQ(widget_, widget);
widget->RemoveObserver(this);
manager_->OnChromeVoxPanelDestroying();
// |this| is deleted.
std::move(on_destroying_).Run();
// |this| should be deleted.
}
private:
views::Widget* widget_;
AccessibilityManager* manager_;
DISALLOW_COPY_AND_ASSIGN(ChromeVoxPanelWidgetObserver);
base::OnceCallback<void()> on_destroying_;
DISALLOW_COPY_AND_ASSIGN(AccessibilityPanelWidgetObserver);
};
///////////////////////////////////////////////////////////////////////////////
......@@ -1192,8 +1193,10 @@ void AccessibilityManager::PostLoadChromeVox() {
if (!chromevox_panel_) {
chromevox_panel_ = new ChromeVoxPanel(profile_);
chromevox_panel_widget_observer_.reset(
new ChromeVoxPanelWidgetObserver(chromevox_panel_->GetWidget(), this));
chromevox_panel_widget_observer_.reset(new AccessibilityPanelWidgetObserver(
chromevox_panel_->GetWidget(),
base::BindOnce(&AccessibilityManager::OnChromeVoxPanelDestroying,
base::Unretained(this))));
}
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
......@@ -1230,13 +1233,10 @@ void AccessibilityManager::PostSwitchChromeVoxProfile() {
chromevox_panel_ = nullptr;
}
chromevox_panel_ = new ChromeVoxPanel(profile_);
chromevox_panel_widget_observer_.reset(
new ChromeVoxPanelWidgetObserver(chromevox_panel_->GetWidget(), this));
}
void AccessibilityManager::OnChromeVoxPanelClosing() {
chromevox_panel_widget_observer_.reset();
chromevox_panel_ = nullptr;
chromevox_panel_widget_observer_.reset(new AccessibilityPanelWidgetObserver(
chromevox_panel_->GetWidget(),
base::BindOnce(&AccessibilityManager::OnChromeVoxPanelDestroying,
base::Unretained(this))));
}
void AccessibilityManager::OnChromeVoxPanelDestroying() {
......
......@@ -77,7 +77,7 @@ typedef base::CallbackList<void(const AccessibilityStatusEventDetails&)>
typedef AccessibilityStatusCallbackList::Subscription
AccessibilityStatusSubscription;
class ChromeVoxPanelWidgetObserver;
class AccessibilityPanelWidgetObserver;
enum class PlaySoundOption {
// The sound is always played.
......@@ -391,7 +391,7 @@ class AccessibilityManager
bool braille_ime_current_;
ChromeVoxPanel* chromevox_panel_;
std::unique_ptr<ChromeVoxPanelWidgetObserver>
std::unique_ptr<AccessibilityPanelWidgetObserver>
chromevox_panel_widget_observer_;
std::string keyboard_listener_extension_id_;
......
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