Home | History | Annotate | Download | only in protocol
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // ClipboardThreadProxy is used to allow a Clipboard on the UI thread to invoke
      6 // a ClipboardStub on the network thread.
      7 
      8 #ifndef REMOTING_PROTOCOL_CLIPBOARD_THREAD_PROXY_H_
      9 #define REMOTING_PROTOCOL_CLIPBOARD_THREAD_PROXY_H_
     10 
     11 #include "base/memory/weak_ptr.h"
     12 #include "base/task_runner.h"
     13 #include "remoting/protocol/clipboard_stub.h"
     14 
     15 namespace base {
     16 class MessageLoopProxy;
     17 }  // namespace base
     18 
     19 namespace remoting {
     20 namespace protocol {
     21 
     22 class ClipboardThreadProxy : public ClipboardStub {
     23  public:
     24   virtual ~ClipboardThreadProxy();
     25 
     26   // Constructs a proxy for |clipboard_stub| which will trampoline invocations
     27   // to |clipboard_stub_task_runner|.
     28   ClipboardThreadProxy(
     29       const base::WeakPtr<ClipboardStub>& clipboard_stub,
     30       scoped_refptr<base::TaskRunner> clipboard_stub_task_runner);
     31 
     32   // ClipboardStub implementation.
     33   virtual void InjectClipboardEvent(const ClipboardEvent& event) OVERRIDE;
     34 
     35  private:
     36   // Injects a clipboard event into a stub, if the given weak pointer to the
     37   // stub is valid.
     38   static void InjectClipboardEventStatic(
     39       const base::WeakPtr<ClipboardStub>& clipboard_stub,
     40       const ClipboardEvent& event);
     41 
     42   base::WeakPtr<ClipboardStub> clipboard_stub_;
     43   scoped_refptr<base::TaskRunner> clipboard_stub_task_runner_;
     44 
     45   DISALLOW_COPY_AND_ASSIGN(ClipboardThreadProxy);
     46 };
     47 
     48 }  // namespace protocol
     49 }  // namespace remoting
     50 
     51 #endif  // REMOTING_PROTOCOL_CLIPBOARD_THREAD_PROXY_H_
     52