Index: remoting/host/clipboard_win.cc |
diff --git a/remoting/host/clipboard_win.cc b/remoting/host/clipboard_win.cc |
index 0021e1f32da0d20e2bfc7b54204fdc178e2719f2..cc504bad231edeeaa64545135275b7f6ed1ef3da 100644 |
--- a/remoting/host/clipboard_win.cc |
+++ b/remoting/host/clipboard_win.cc |
@@ -18,6 +18,7 @@ |
#include "base/win/wrapped_window_proc.h" |
#include "remoting/base/constants.h" |
#include "remoting/proto/event.pb.h" |
+#include "remoting/protocol/clipboard_stub.h" |
namespace { |
@@ -104,7 +105,8 @@ class ClipboardWin : public Clipboard { |
public: |
ClipboardWin(); |
- virtual void Start() OVERRIDE; |
+ virtual void Start( |
+ scoped_ptr<protocol::ClipboardStub> client_clipboard) OVERRIDE; |
virtual void InjectClipboardEvent( |
const protocol::ClipboardEvent& event) OVERRIDE; |
virtual void Stop() OVERRIDE; |
@@ -117,6 +119,7 @@ class ClipboardWin : public Clipboard { |
static LRESULT CALLBACK WndProc(HWND hwmd, UINT msg, WPARAM wParam, |
LPARAM lParam); |
+ scoped_ptr<protocol::ClipboardStub> client_clipboard_; |
HWND hwnd_; |
AddClipboardFormatListenerFn* add_clipboard_format_listener_; |
RemoveClipboardFormatListenerFn* remove_clipboard_format_listener_; |
@@ -132,7 +135,10 @@ ClipboardWin::ClipboardWin() |
load_functions_tried_(false) { |
} |
-void ClipboardWin::Start() { |
+void ClipboardWin::Start( |
+ scoped_ptr<protocol::ClipboardStub> client_clipboard) { |
+ client_clipboard_.swap(client_clipboard); |
+ |
if (!load_functions_tried_) { |
load_functions_tried_ = true; |
HMODULE user32_module = ::GetModuleHandle(L"user32.dll"); |
@@ -176,6 +182,8 @@ void ClipboardWin::Start() { |
} |
void ClipboardWin::Stop() { |
+ client_clipboard_.reset(); |
+ |
if (hwnd_) { |
if (HaveClipboardListenerApi()) { |
(*remove_clipboard_format_listener_)(hwnd_); |
@@ -253,7 +261,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); |
+ } |
} |
} |