diff options
author | simonmorris@chromium.org <simonmorris@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-31 20:26:29 +0000 |
---|---|---|
committer | simonmorris@chromium.org <simonmorris@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-31 20:26:29 +0000 |
commit | 7f44ba4d86341308a888455858426adcc1e713e4 (patch) | |
tree | 24d9aab3946f82314ab93fd80dee96f447b1f10c /remoting/host/clipboard_win.cc | |
parent | bb5e0001628e91fccba24c07d5767e3faa0c8c43 (diff) | |
download | chromium_src-7f44ba4d86341308a888455858426adcc1e713e4.zip chromium_src-7f44ba4d86341308a888455858426adcc1e713e4.tar.gz chromium_src-7f44ba4d86341308a888455858426adcc1e713e4.tar.bz2 |
[Chromoting] Let the Windows IT2Me host send clipboard events to the client.
This CL lets ClipboardWin send clipboard events to ClientSession.
BUG=117473
Review URL: https://chromiumcodereview.appspot.com/10413060
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139854 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/clipboard_win.cc')
-rw-r--r-- | remoting/host/clipboard_win.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/remoting/host/clipboard_win.cc b/remoting/host/clipboard_win.cc index 0021e1f..cc504ba 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); + } } } |