Chromium Code Reviews| Index: remoting/host/chromeos/clipboard_aura.cc |
| diff --git a/remoting/host/chromeos/clipboard_aura.cc b/remoting/host/chromeos/clipboard_aura.cc |
| index 7fca2df7b3ccf4d3285e33efb34aa021f07c7b7f..e5eee10123501093c007b45d6fe5df005b8391ec 100644 |
| --- a/remoting/host/chromeos/clipboard_aura.cc |
| +++ b/remoting/host/chromeos/clipboard_aura.cc |
| @@ -5,8 +5,6 @@ |
| #include "remoting/host/chromeos/clipboard_aura.h" |
| #include "base/strings/utf_string_conversions.h" |
| -#include "base/timer/timer.h" |
| -#include "content/public/browser/browser_thread.h" |
| #include "remoting/base/constants.h" |
| #include "remoting/proto/event.pb.h" |
| #include "remoting/protocol/clipboard_stub.h" |
| @@ -22,83 +20,31 @@ const int64 kClipboardPollingIntervalMs = 500; |
| namespace remoting { |
| -class ClipboardAura::Core { |
| - public: |
| - Core(); |
| - |
| - // Mirror the public interface. |
| - void Start(scoped_ptr<protocol::ClipboardStub> client_clipboard); |
| - void InjectClipboardEvent(const protocol::ClipboardEvent& event); |
| - void Stop(); |
| - |
| - // Overrides the clipboard polling interval for unit test. |
| - void SetPollingIntervalForTesting(base::TimeDelta polling_interval); |
| - |
| - private: |
| - void CheckClipboardForChanges(); |
| - |
| - scoped_ptr<protocol::ClipboardStub> client_clipboard_; |
| - scoped_ptr<base::RepeatingTimer<Core>> clipboard_polling_timer_; |
| - uint64 current_change_count_; |
| - base::TimeDelta polling_interval_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(Core); |
| -}; |
| - |
| -ClipboardAura::ClipboardAura( |
| - scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) |
| - : core_(new Core()), |
| - ui_task_runner_(ui_task_runner) { |
| +ClipboardAura::ClipboardAura() |
|
kelvinp
2015/02/17 18:30:21
Please add a comment and say this class should onl
Sergey Ulanov
2015/02/17 18:46:40
There is already a comment about it in clipboard.h
|
| + : current_change_count_(0), |
| + polling_interval_( |
| + base::TimeDelta::FromMilliseconds(kClipboardPollingIntervalMs)) { |
| } |
| ClipboardAura::~ClipboardAura() { |
| - ui_task_runner_->DeleteSoon(FROM_HERE, core_.release()); |
| } |
| void ClipboardAura::Start( |
| scoped_ptr<protocol::ClipboardStub> client_clipboard) { |
| - ui_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&Core::Start, base::Unretained(core_.get()), |
| - base::Passed(&client_clipboard))); |
| -} |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| -void ClipboardAura::InjectClipboardEvent( |
| - const protocol::ClipboardEvent& event) { |
| - ui_task_runner_->PostTask(FROM_HERE, |
| - base::Bind(&Core::InjectClipboardEvent, |
| - base::Unretained(core_.get()), event)); |
| -} |
| - |
| -void ClipboardAura::Stop() { |
| - ui_task_runner_->PostTask( |
| - FROM_HERE, base::Bind(&Core::Stop, base::Unretained(core_.get()))); |
| -}; |
| - |
| -void ClipboardAura::SetPollingIntervalForTesting( |
| - base::TimeDelta polling_interval) { |
| - core_->SetPollingIntervalForTesting(polling_interval); |
| -} |
| - |
| -ClipboardAura::Core::Core() |
| - : current_change_count_(0), |
| - polling_interval_( |
| - base::TimeDelta::FromMilliseconds(kClipboardPollingIntervalMs)) { |
| -} |
| - |
| -void ClipboardAura::Core::Start( |
| - scoped_ptr<protocol::ClipboardStub> client_clipboard) { |
| - client_clipboard_.reset(client_clipboard.release()); |
| + client_clipboard_ = client_clipboard.Pass(); |
| // Aura doesn't provide a clipboard-changed notification. The only way to |
| // detect clipboard changes is by polling. |
| - clipboard_polling_timer_.reset(new base::RepeatingTimer<Core>()); |
| - clipboard_polling_timer_->Start( |
| - FROM_HERE, polling_interval_, this, |
| - &ClipboardAura::Core::CheckClipboardForChanges); |
| + clipboard_polling_timer_.Start(FROM_HERE, polling_interval_, this, |
| + &ClipboardAura::CheckClipboardForChanges); |
| } |
| -void ClipboardAura::Core::InjectClipboardEvent( |
| +void ClipboardAura::InjectClipboardEvent( |
| const protocol::ClipboardEvent& event) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| // Currently we only handle UTF-8 text. |
| if (event.mime_type().compare(kMimeTypeTextUtf8) != 0) { |
| return; |
| @@ -112,17 +58,23 @@ void ClipboardAura::Core::InjectClipboardEvent( |
| current_change_count_++; |
| } |
| -void ClipboardAura::Core::Stop() { |
| - clipboard_polling_timer_.reset(); |
| +void ClipboardAura::Stop() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + clipboard_polling_timer_.Stop(); |
| client_clipboard_.reset(); |
| -} |
| +}; |
| -void ClipboardAura::Core::SetPollingIntervalForTesting( |
| +void ClipboardAura::SetPollingIntervalForTesting( |
| base::TimeDelta polling_interval) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| polling_interval_ = polling_interval; |
| } |
| -void ClipboardAura::Core::CheckClipboardForChanges() { |
| +void ClipboardAura::CheckClipboardForChanges() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread(); |
| uint64 change_count = |
| clipboard->GetSequenceNumber(ui::CLIPBOARD_TYPE_COPY_PASTE); |
| @@ -144,9 +96,7 @@ void ClipboardAura::Core::CheckClipboardForChanges() { |
| } |
| scoped_ptr<Clipboard> Clipboard::Create() { |
| - return make_scoped_ptr( |
| - new ClipboardAura(content::BrowserThread::GetMessageLoopProxyForThread( |
| - content::BrowserThread::UI))); |
| + return make_scoped_ptr(new ClipboardAura()); |
| } |
| } // namespace remoting |