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