| // Copyright 2014 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef COMPONENTS_GCM_DRIVER_FAKE_GCM_APP_HANDLER_H_ | 
 | #define COMPONENTS_GCM_DRIVER_FAKE_GCM_APP_HANDLER_H_ | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "base/compiler_specific.h" | 
 | #include "components/gcm_driver/gcm_app_handler.h" | 
 |  | 
 | namespace base { | 
 | class RunLoop; | 
 | } | 
 |  | 
 | namespace gcm { | 
 |  | 
 | class FakeGCMAppHandler : public GCMAppHandler { | 
 |  public: | 
 |   enum Event { | 
 |     NO_EVENT, | 
 |     MESSAGE_EVENT, | 
 |     MESSAGES_DELETED_EVENT, | 
 |     SEND_ERROR_EVENT, | 
 |     DECRYPTION_FAILED_EVENT, | 
 |   }; | 
 |  | 
 |   FakeGCMAppHandler(); | 
 |  | 
 |   FakeGCMAppHandler(const FakeGCMAppHandler&) = delete; | 
 |   FakeGCMAppHandler& operator=(const FakeGCMAppHandler&) = delete; | 
 |  | 
 |   ~FakeGCMAppHandler() override; | 
 |  | 
 |   const Event& received_event() const { return received_event_; } | 
 |   const std::string& app_id() const { return app_id_; } | 
 |   const std::string& acked_message_id() const { return acked_message_id_; } | 
 |   const IncomingMessage& message() const { return message_; } | 
 |   const GCMClient::SendErrorDetails& send_error_details() const { | 
 |     return send_error_details_; | 
 |   } | 
 |  | 
 |   void WaitForNotification(); | 
 |  | 
 |   // GCMAppHandler implementation. | 
 |   void ShutdownHandler() override; | 
 |   void OnStoreReset() override; | 
 |   void OnMessage(const std::string& app_id, | 
 |                  const IncomingMessage& message) override; | 
 |   void OnMessagesDeleted(const std::string& app_id) override; | 
 |   void OnSendError( | 
 |       const std::string& app_id, | 
 |       const GCMClient::SendErrorDetails& send_error_details) override; | 
 |   void OnMessageDecryptionFailed(const std::string& app_id, | 
 |                                  const std::string& message_id, | 
 |                                  const std::string& error_message) override; | 
 |   void OnSendAcknowledged(const std::string& app_id, | 
 |                           const std::string& message_id) override; | 
 |  | 
 |  private: | 
 |   void ClearResults(); | 
 |  | 
 |   std::unique_ptr<base::RunLoop> run_loop_; | 
 |  | 
 |   Event received_event_; | 
 |   std::string app_id_; | 
 |   std::string acked_message_id_; | 
 |   IncomingMessage message_; | 
 |   GCMClient::SendErrorDetails send_error_details_; | 
 | }; | 
 |  | 
 | }  // namespace gcm | 
 |  | 
 | #endif  // COMPONENTS_GCM_DRIVER_FAKE_GCM_APP_HANDLER_H_ |