17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/browser/extensions/api/feedback_private/feedback_service.h"
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/callback.h"
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/weak_ptr.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/metrics/statistics_recorder.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/values.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h"
126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace extensions {
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class FeedbackServiceImpl
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    : public FeedbackService,
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      public base::SupportsWeakPtr<FeedbackServiceImpl> {
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  FeedbackServiceImpl();
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~FeedbackServiceImpl();
227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual std::string GetUserEmail() OVERRIDE;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void GetHistograms(std::string* histograms) OVERRIDE;
257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private:
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // Overridden from FeedbackService:
287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual base::WeakPtr<FeedbackService> GetWeakPtr() OVERRIDE;
297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(FeedbackServiceImpl);
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)FeedbackService* FeedbackService::CreateInstance() {
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return new FeedbackServiceImpl;
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)FeedbackServiceImpl::FeedbackServiceImpl() {
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)FeedbackServiceImpl::~FeedbackServiceImpl() {
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)std::string FeedbackServiceImpl::GetUserEmail() {
446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  const user_manager::UserManager* manager = user_manager::UserManager::Get();
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  const user_manager::User* user = manager ? manager->GetActiveUser() : NULL;
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return user ? user->display_email() : std::string();
4768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void FeedbackServiceImpl::GetHistograms(std::string* histograms) {
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  *histograms = base::StatisticsRecorder::ToJSON(std::string());
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)base::WeakPtr<FeedbackService> FeedbackServiceImpl::GetWeakPtr() {
547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return AsWeakPtr();
557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace extensions
58