Home | History | Annotate | Download | only in host
      1 // Copyright 2014 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 #ifndef REMOTING_HOST_FAKE_HOST_EXTENSION_H_
      6 #define REMOTING_HOST_FAKE_HOST_EXTENSION_H_
      7 
      8 #include <string>
      9 
     10 #include "remoting/host/host_extension.h"
     11 
     12 namespace remoting {
     13 
     14 class ClientSessionControl;
     15 class HostExtensionSession;
     16 
     17 namespace protocol {
     18 class ClientStub;
     19 }
     20 
     21 // |HostExtension| implementation that can report a specified capability, and
     22 // reports messages matching a specified type as having been handled.
     23 class FakeExtension : public HostExtension {
     24  public:
     25   FakeExtension(const std::string& message_type,
     26                 const std::string& capability);
     27   virtual ~FakeExtension();
     28 
     29   // HostExtension interface.
     30   virtual std::string capability() const OVERRIDE;
     31   virtual scoped_ptr<HostExtensionSession> CreateExtensionSession(
     32       ClientSessionControl* client_session_control,
     33       protocol::ClientStub* client_stub) OVERRIDE;
     34 
     35   // Controls for testing.
     36   void set_steal_video_capturer(bool steal_video_capturer) {
     37     steal_video_capturer_ = steal_video_capturer;
     38   }
     39 
     40   // Accessors for testing.
     41   bool has_handled_message() const { return has_handled_message_; }
     42   bool has_wrapped_video_encoder() const { return has_wrapped_video_encoder_; }
     43   bool has_wrapped_video_capturer() const {
     44     return has_wrapped_video_capturer_;
     45   }
     46   bool was_instantiated() const { return was_instantiated_; }
     47 
     48  private:
     49   class Session;
     50   friend class Session;
     51 
     52   // The type name of extension messages that this fake consumes.
     53   std::string message_type_;
     54 
     55   // The capability this fake reports, and requires clients to support, if any.
     56   std::string capability_;
     57 
     58   // True if this extension should intercept creation of the session's video
     59   // capturer and consume it, preventing the video pipeline being created.
     60   bool steal_video_capturer_;
     61 
     62   // True if a message of |message_type_| has been processed by this extension.
     63   bool has_handled_message_;
     64 
     65   // True if this extension had the opportunity to modify the video pipeline.
     66   bool has_wrapped_video_encoder_;
     67   bool has_wrapped_video_capturer_;
     68 
     69   // True if CreateExtensionSession() was called on this extension.
     70   bool was_instantiated_;
     71 
     72   DISALLOW_COPY_AND_ASSIGN(FakeExtension);
     73 };
     74 
     75 } // namespace remoting
     76 
     77 #endif  // REMOTING_HOST_FAKE_HOST_EXTENSION_H_
     78