| // Copyright 2014 The Chromium OS Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef FEEDBACK_FEEDBACK_SERVICE_H_ | 
 | #define FEEDBACK_FEEDBACK_SERVICE_H_ | 
 |  | 
 | #include "dbus/exported_object.h" | 
 |  | 
 | #include <string> | 
 |  | 
 | namespace userfeedback { | 
 | class ExtensionSubmit; | 
 | } | 
 |  | 
 | namespace feedback { | 
 |  | 
 | class FeedbackUploader; | 
 |  | 
 | class FeedbackService : public base::RefCounted<FeedbackService> { | 
 |  public: | 
 |   explicit FeedbackService(feedback::FeedbackUploader* uploader); | 
 |   virtual ~FeedbackService(); | 
 |  | 
 |   // Send the given report to the server |uploader_| is configured for. | 
 |   // The callback will be called with | 
 |   void SendFeedback( | 
 |       const userfeedback::ExtensionSubmit& feedback, | 
 |       const base::Callback<void(bool, const std::string&)>& callback); | 
 |  | 
 |   void QueueExistingReport(const std::string& data); | 
 |  | 
 |  private: | 
 |   feedback::FeedbackUploader* uploader_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(FeedbackService); | 
 | }; | 
 |  | 
 | class DBusFeedbackServiceImpl : public FeedbackService { | 
 |  public: | 
 |   explicit DBusFeedbackServiceImpl(feedback::FeedbackUploader* uploader); | 
 |   virtual ~DBusFeedbackServiceImpl(); | 
 |  | 
 |   bool Start(dbus::Bus* bus); | 
 |  | 
 |  private: | 
 |   void DBusSendFeedback(dbus::MethodCall* method_call, | 
 |                         dbus::ExportedObject::ResponseSender sender); | 
 |  | 
 |   void DBusFeedbackSent(dbus::MethodCall* method_call, | 
 |                         dbus::ExportedObject::ResponseSender sender, | 
 |                         bool status, const std::string& message); | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(DBusFeedbackServiceImpl); | 
 | }; | 
 |  | 
 | }  // namespace feedback | 
 |  | 
 | #endif  // FEEDBACK_FEEDBACK_SERVICE_H_ |