Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Unified Diff: remoting/host/chromeos/clipboard_aura.cc

Issue 923773003: Revert of Remove dependency on content from remoting_host. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/chromeos/clipboard_aura.h ('k') | remoting/host/chromeos/clipboard_aura_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/chromeos/clipboard_aura.cc
diff --git a/remoting/host/chromeos/clipboard_aura.cc b/remoting/host/chromeos/clipboard_aura.cc
index e5eee10123501093c007b45d6fe5df005b8391ec..7fca2df7b3ccf4d3285e33efb34aa021f07c7b7f 100644
--- a/remoting/host/chromeos/clipboard_aura.cc
+++ b/remoting/host/chromeos/clipboard_aura.cc
@@ -5,6 +5,8 @@
#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"
@@ -20,31 +22,83 @@
namespace remoting {
-ClipboardAura::ClipboardAura()
+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() {
+ 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)));
+}
+
+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)) {
}
-ClipboardAura::~ClipboardAura() {
-}
-
-void ClipboardAura::Start(
+void ClipboardAura::Core::Start(
scoped_ptr<protocol::ClipboardStub> client_clipboard) {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- client_clipboard_ = client_clipboard.Pass();
+ client_clipboard_.reset(client_clipboard.release());
// Aura doesn't provide a clipboard-changed notification. The only way to
// detect clipboard changes is by polling.
- clipboard_polling_timer_.Start(FROM_HERE, polling_interval_, this,
- &ClipboardAura::CheckClipboardForChanges);
+ clipboard_polling_timer_.reset(new base::RepeatingTimer<Core>());
+ clipboard_polling_timer_->Start(
+ FROM_HERE, polling_interval_, this,
+ &ClipboardAura::Core::CheckClipboardForChanges);
}
-void ClipboardAura::InjectClipboardEvent(
+void ClipboardAura::Core::InjectClipboardEvent(
const protocol::ClipboardEvent& event) {
- DCHECK(thread_checker_.CalledOnValidThread());
-
// Currently we only handle UTF-8 text.
if (event.mime_type().compare(kMimeTypeTextUtf8) != 0) {
return;
@@ -58,23 +112,17 @@
current_change_count_++;
}
-void ClipboardAura::Stop() {
- DCHECK(thread_checker_.CalledOnValidThread());
+void ClipboardAura::Core::Stop() {
+ clipboard_polling_timer_.reset();
+ client_clipboard_.reset();
+}
- clipboard_polling_timer_.Stop();
- client_clipboard_.reset();
-};
-
-void ClipboardAura::SetPollingIntervalForTesting(
+void ClipboardAura::Core::SetPollingIntervalForTesting(
base::TimeDelta polling_interval) {
- DCHECK(thread_checker_.CalledOnValidThread());
-
polling_interval_ = polling_interval;
}
-void ClipboardAura::CheckClipboardForChanges() {
- DCHECK(thread_checker_.CalledOnValidThread());
-
+void ClipboardAura::Core::CheckClipboardForChanges() {
ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread();
uint64 change_count =
clipboard->GetSequenceNumber(ui::CLIPBOARD_TYPE_COPY_PASTE);
@@ -96,7 +144,9 @@
}
scoped_ptr<Clipboard> Clipboard::Create() {
- return make_scoped_ptr(new ClipboardAura());
+ return make_scoped_ptr(
+ new ClipboardAura(content::BrowserThread::GetMessageLoopProxyForThread(
+ content::BrowserThread::UI)));
}
} // namespace remoting
« no previous file with comments | « remoting/host/chromeos/clipboard_aura.h ('k') | remoting/host/chromeos/clipboard_aura_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698