Commit f064dd88 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Clean up ui::ClipboardMonitor.

- Use a ThreadChecker member instead of inheriting from ThreadChecker.
- Switch from a leaky Singleton to base::NoDestructor.

Change-Id: I86f8f50f7776ceefa62ab3586314c5af3bacf7e7
Reviewed-on: https://chromium-review.googlesource.com/1178468Reviewed-by: default avatarJenny Zhang <jennyz@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583866}
parent 0b92e4a4
......@@ -12,28 +12,28 @@ namespace ui {
ClipboardMonitor::ClipboardMonitor() {}
ClipboardMonitor::~ClipboardMonitor() {
DCHECK(CalledOnValidThread());
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
}
// static
ClipboardMonitor* ClipboardMonitor::GetInstance() {
return base::Singleton<ClipboardMonitor,
base::LeakySingletonTraits<ClipboardMonitor>>::get();
static base::NoDestructor<ClipboardMonitor> monitor;
return monitor.get();
}
void ClipboardMonitor::NotifyClipboardDataChanged() {
DCHECK(CalledOnValidThread());
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
for (ClipboardObserver& observer : observers_)
observer.OnClipboardDataChanged();
}
void ClipboardMonitor::AddObserver(ClipboardObserver* observer) {
DCHECK(CalledOnValidThread());
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
observers_.AddObserver(observer);
}
void ClipboardMonitor::RemoveObserver(ClipboardObserver* observer) {
DCHECK(CalledOnValidThread());
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
observers_.RemoveObserver(observer);
}
......
......@@ -6,7 +6,7 @@
#define UI_BASE_CLIPBOARD_CLIPBOARD_MONITOR_H_
#include "base/macros.h"
#include "base/memory/singleton.h"
#include "base/no_destructor.h"
#include "base/observer_list.h"
#include "base/threading/thread_checker.h"
#include "ui/base/ui_base_export.h"
......@@ -17,7 +17,7 @@ class ClipboardObserver;
// A singleton instance to monitor and notify ClipboardObservers for clipboard
// changes.
class UI_BASE_EXPORT ClipboardMonitor : public base::ThreadChecker {
class UI_BASE_EXPORT ClipboardMonitor {
public:
static ClipboardMonitor* GetInstance();
......@@ -31,15 +31,18 @@ class UI_BASE_EXPORT ClipboardMonitor : public base::ThreadChecker {
virtual void NotifyClipboardDataChanged();
private:
friend struct base::DefaultSingletonTraits<ClipboardMonitor>;
friend class base::NoDestructor<ClipboardMonitor>;
ClipboardMonitor();
virtual ~ClipboardMonitor();
base::ObserverList<ClipboardObserver> observers_;
THREAD_CHECKER(thread_checker_);
DISALLOW_COPY_AND_ASSIGN(ClipboardMonitor);
};
} // namespace ui
#endif /* UI_BASE_CLIPBOARD_CLIPBOARD_MONITOR_H_ */
#endif // UI_BASE_CLIPBOARD_CLIPBOARD_MONITOR_H_
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