Index: remoting/host/clipboard_win.cc |
diff --git a/remoting/host/clipboard_win.cc b/remoting/host/clipboard_win.cc |
index b3fc0c10effe4a647f671110859bcb7c3b2ef430..61bd5a6a078ab8ad1198dd86d524664d0ab55964 100644 |
--- a/remoting/host/clipboard_win.cc |
+++ b/remoting/host/clipboard_win.cc |
@@ -103,7 +103,8 @@ class ClipboardWin : public Clipboard { |
public: |
ClipboardWin(); |
- virtual void Start() OVERRIDE; |
+ virtual void Start( |
+ const scoped_refptr<protocol::ClipboardProxy>& client_clipboard) OVERRIDE; |
virtual void InjectClipboardEvent( |
const protocol::ClipboardEvent& event) OVERRIDE; |
virtual void Stop() OVERRIDE; |
@@ -116,6 +117,7 @@ class ClipboardWin : public Clipboard { |
static LRESULT CALLBACK WndProc(HWND hwmd, UINT msg, WPARAM wParam, |
LPARAM lParam); |
+ scoped_refptr<protocol::ClipboardProxy> client_clipboard_; |
HWND hwnd_; |
AddClipboardFormatListenerFn* add_clipboard_format_listener_; |
RemoveClipboardFormatListenerFn* remove_clipboard_format_listener_; |
@@ -131,7 +133,10 @@ ClipboardWin::ClipboardWin() |
load_functions_tried_(false) { |
} |
-void ClipboardWin::Start() { |
+void ClipboardWin::Start( |
+ const scoped_refptr<protocol::ClipboardProxy>& client_clipboard) { |
+ client_clipboard_ = client_clipboard; |
+ |
if (!load_functions_tried_) { |
load_functions_tried_ = true; |
HMODULE user32_module = ::GetModuleHandle(L"user32.dll"); |
@@ -175,6 +180,8 @@ void ClipboardWin::Start() { |
} |
void ClipboardWin::Stop() { |
+ client_clipboard_ = NULL; |
+ |
if (hwnd_) { |
if (HaveClipboardListenerApi()) { |
(*remove_clipboard_format_listener_)(hwnd_); |
@@ -252,7 +259,9 @@ void ClipboardWin::OnClipboardUpdate() { |
event.set_mime_type(kMimeTypeTextUtf8); |
event.set_data(UTF16ToUTF8(text)); |
- // TODO(simonmorris): Send the event to the client. |
+ if (client_clipboard_.get()) { |
+ client_clipboard_->InjectClipboardEvent(event); |
+ } |
} |
} |