| // Copyright 2016 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef REMOTING_HOST_HOST_EXPERIMENT_SESSION_PLUGIN_H_ | 
 | #define REMOTING_HOST_HOST_EXPERIMENT_SESSION_PLUGIN_H_ | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 |  | 
 | #include "remoting/protocol/session_plugin.h" | 
 | #include "third_party/libjingle_xmpp/xmllite/xmlelement.h" | 
 |  | 
 | namespace remoting { | 
 |  | 
 | // A SessionPlugin implementation to send host attributes to client, and | 
 | // receives experiment settings. | 
 | class HostExperimentSessionPlugin : public protocol::SessionPlugin { | 
 |  public: | 
 |   using SessionPlugin::SessionPlugin; | 
 |  | 
 |   // protocol::SessionPlug implementation. | 
 |   std::unique_ptr<jingle_xmpp::XmlElement> GetNextMessage() override; | 
 |  | 
 |   void OnIncomingMessage(const jingle_xmpp::XmlElement& attachments) override; | 
 |  | 
 |   // Whether we have received configuration from client. | 
 |   bool configuration_received() const; | 
 |  | 
 |   // The configuration sent from client, may be empty. | 
 |   const std::string& configuration() const; | 
 |  | 
 |  private: | 
 |   bool attributes_sent_ = false; | 
 |   bool configuration_received_ = false; | 
 |   std::string configuration_; | 
 | }; | 
 |  | 
 | }  // namespace remoting | 
 |  | 
 | #endif  // REMOTING_HOST_HOST_EXPERIMENT_SESSION_PLUGIN_H_ |