| Index: remoting/protocol/clipboard_duplicate_filter.cc
|
| diff --git a/remoting/protocol/clipboard_duplicate_filter.cc b/remoting/protocol/clipboard_duplicate_filter.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5526d768e439a72254aae4466502285f08db5e31
|
| --- /dev/null
|
| +++ b/remoting/protocol/clipboard_duplicate_filter.cc
|
| @@ -0,0 +1,72 @@
|
| +#include "remoting/protocol/clipboard_duplicate_filter.h"
|
| +
|
| +#include "remoting/proto/event.pb.h"
|
| +
|
| +namespace remoting {
|
| +namespace protocol {
|
| +
|
| +ClipboardDuplicateFilter::ClipboardDuplicateFilter()
|
| + : to_host_(NULL),
|
| + to_client_(NULL),
|
| + filter_to_client_(this),
|
| + filter_to_host_(this) {
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::set_to_client(ClipboardStub* clipboard_stub) {
|
| + to_client_ = clipboard_stub;
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::set_to_host(ClipboardStub* clipboard_stub) {
|
| + to_host_ = clipboard_stub;
|
| +}
|
| +
|
| +ClipboardStub* ClipboardDuplicateFilter::get_filter_to_client() {
|
| + return &filter_to_client_;
|
| +}
|
| +
|
| +ClipboardStub* ClipboardDuplicateFilter::get_filter_to_host() {
|
| + return &filter_to_host_;
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::InjectClipboardEventToClient(
|
| + const ClipboardEvent& event) {
|
| + if (!to_client_) {
|
| + return;
|
| + }
|
| + if (event.mime_type() == recent_mime_type_ && event.data() == recent_data_) {
|
| + return;
|
| + }
|
| + to_client_->InjectClipboardEvent(event);
|
| + recent_mime_type_ = event.mime_type();
|
| + recent_data_ = event.data();
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::InjectClipboardEventToHost(
|
| + const ClipboardEvent& event) {
|
| + recent_mime_type_ = event.mime_type();
|
| + recent_data_ = event.data();
|
| + if (to_host_) {
|
| + to_host_->InjectClipboardEvent(event);
|
| + }
|
| +}
|
| +
|
| +ClipboardDuplicateFilter::FilterToClient::FilterToClient(
|
| + ClipboardDuplicateFilter* filter) : filter_(filter) {
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::FilterToClient::InjectClipboardEvent(
|
| + const ClipboardEvent& event) {
|
| + filter_->InjectClipboardEventToClient(event);
|
| +}
|
| +
|
| +ClipboardDuplicateFilter::FilterToHost::FilterToHost(
|
| + ClipboardDuplicateFilter* filter) : filter_(filter) {
|
| +}
|
| +
|
| +void ClipboardDuplicateFilter::FilterToHost::InjectClipboardEvent(
|
| + const ClipboardEvent& event) {
|
| + filter_->InjectClipboardEventToHost(event);
|
| +}
|
| +
|
| +} // namespace protocol
|
| +} // namespace remoting
|
|
|