| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/api/feedback_private/feedback_private_api.h" | 5 #include "chrome/browser/extensions/api/feedback_private/feedback_private_api.h" |
| 6 | 6 |
| 7 #include <memory> |
| 7 #include <utility> | 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| 10 #include "base/macros.h" | 11 #include "base/macros.h" |
| 11 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/ptr_util.h" |
| 12 #include "base/metrics/statistics_recorder.h" | 13 #include "base/metrics/statistics_recorder.h" |
| 13 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
| 16 #include "base/values.h" | 17 #include "base/values.h" |
| 17 #include "build/build_config.h" | 18 #include "build/build_config.h" |
| 18 #include "chrome/browser/browser_process.h" | 19 #include "chrome/browser/browser_process.h" |
| 19 #include "chrome/browser/extensions/api/feedback_private/feedback_service.h" | 20 #include "chrome/browser/extensions/api/feedback_private/feedback_service.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
| 21 #include "chrome/browser/signin/signin_manager_factory.h" | 22 #include "chrome/browser/signin/signin_manager_factory.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 } | 86 } |
| 86 | 87 |
| 87 void FeedbackPrivateAPI::RequestFeedbackForFlow( | 88 void FeedbackPrivateAPI::RequestFeedbackForFlow( |
| 88 const std::string& description_template, | 89 const std::string& description_template, |
| 89 const std::string& category_tag, | 90 const std::string& category_tag, |
| 90 const GURL& page_url, | 91 const GURL& page_url, |
| 91 api::feedback_private::FeedbackFlow flow) { | 92 api::feedback_private::FeedbackFlow flow) { |
| 92 if (browser_context_ && EventRouter::Get(browser_context_)) { | 93 if (browser_context_ && EventRouter::Get(browser_context_)) { |
| 93 FeedbackInfo info; | 94 FeedbackInfo info; |
| 94 info.description = description_template; | 95 info.description = description_template; |
| 95 info.category_tag = make_scoped_ptr(new std::string(category_tag)); | 96 info.category_tag = base::WrapUnique(new std::string(category_tag)); |
| 96 info.page_url = make_scoped_ptr(new std::string(page_url.spec())); | 97 info.page_url = base::WrapUnique(new std::string(page_url.spec())); |
| 97 info.system_information.reset(new SystemInformationList); | 98 info.system_information.reset(new SystemInformationList); |
| 98 // The manager is only available if tracing is enabled. | 99 // The manager is only available if tracing is enabled. |
| 99 if (TracingManager* manager = TracingManager::Get()) { | 100 if (TracingManager* manager = TracingManager::Get()) { |
| 100 info.trace_id.reset(new int(manager->RequestTrace())); | 101 info.trace_id.reset(new int(manager->RequestTrace())); |
| 101 } | 102 } |
| 102 info.flow = flow; | 103 info.flow = flow; |
| 103 | 104 |
| 104 scoped_ptr<base::ListValue> args = | 105 std::unique_ptr<base::ListValue> args = |
| 105 feedback_private::OnFeedbackRequested::Create(info); | 106 feedback_private::OnFeedbackRequested::Create(info); |
| 106 | 107 |
| 107 scoped_ptr<Event> event(new Event( | 108 std::unique_ptr<Event> event(new Event( |
| 108 events::FEEDBACK_PRIVATE_ON_FEEDBACK_REQUESTED, | 109 events::FEEDBACK_PRIVATE_ON_FEEDBACK_REQUESTED, |
| 109 feedback_private::OnFeedbackRequested::kEventName, std::move(args))); | 110 feedback_private::OnFeedbackRequested::kEventName, std::move(args))); |
| 110 event->restrict_to_browser_context = browser_context_; | 111 event->restrict_to_browser_context = browser_context_; |
| 111 | 112 |
| 112 EventRouter::Get(browser_context_) | 113 EventRouter::Get(browser_context_) |
| 113 ->DispatchEventToExtension(extension_misc::kFeedbackExtensionId, | 114 ->DispatchEventToExtension(extension_misc::kFeedbackExtensionId, |
| 114 std::move(event)); | 115 std::move(event)); |
| 115 } | 116 } |
| 116 } | 117 } |
| 117 | 118 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 } | 185 } |
| 185 | 186 |
| 186 void FeedbackPrivateGetSystemInformationFunction::OnCompleted( | 187 void FeedbackPrivateGetSystemInformationFunction::OnCompleted( |
| 187 const SystemInformationList& sys_info) { | 188 const SystemInformationList& sys_info) { |
| 188 results_ = feedback_private::GetSystemInformation::Results::Create( | 189 results_ = feedback_private::GetSystemInformation::Results::Create( |
| 189 sys_info); | 190 sys_info); |
| 190 SendResponse(true); | 191 SendResponse(true); |
| 191 } | 192 } |
| 192 | 193 |
| 193 bool FeedbackPrivateSendFeedbackFunction::RunAsync() { | 194 bool FeedbackPrivateSendFeedbackFunction::RunAsync() { |
| 194 scoped_ptr<feedback_private::SendFeedback::Params> params( | 195 std::unique_ptr<feedback_private::SendFeedback::Params> params( |
| 195 feedback_private::SendFeedback::Params::Create(*args_)); | 196 feedback_private::SendFeedback::Params::Create(*args_)); |
| 196 EXTENSION_FUNCTION_VALIDATE(params.get()); | 197 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 197 | 198 |
| 198 const FeedbackInfo &feedback_info = params->feedback; | 199 const FeedbackInfo &feedback_info = params->feedback; |
| 199 | 200 |
| 200 std::string attached_file_uuid; | 201 std::string attached_file_uuid; |
| 201 if (feedback_info.attached_file_blob_uuid.get() && | 202 if (feedback_info.attached_file_blob_uuid.get() && |
| 202 !feedback_info.attached_file_blob_uuid->empty()) | 203 !feedback_info.attached_file_blob_uuid->empty()) |
| 203 attached_file_uuid = *feedback_info.attached_file_blob_uuid; | 204 attached_file_uuid = *feedback_info.attached_file_blob_uuid; |
| 204 | 205 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 225 feedback_data->set_attached_file_uuid(attached_file_uuid); | 226 feedback_data->set_attached_file_uuid(attached_file_uuid); |
| 226 } | 227 } |
| 227 | 228 |
| 228 if (!screenshot_uuid.empty()) | 229 if (!screenshot_uuid.empty()) |
| 229 feedback_data->set_screenshot_uuid(screenshot_uuid); | 230 feedback_data->set_screenshot_uuid(screenshot_uuid); |
| 230 | 231 |
| 231 if (feedback_info.trace_id.get()) { | 232 if (feedback_info.trace_id.get()) { |
| 232 feedback_data->set_trace_id(*feedback_info.trace_id.get()); | 233 feedback_data->set_trace_id(*feedback_info.trace_id.get()); |
| 233 } | 234 } |
| 234 | 235 |
| 235 scoped_ptr<FeedbackData::SystemLogsMap> sys_logs( | 236 std::unique_ptr<FeedbackData::SystemLogsMap> sys_logs( |
| 236 new FeedbackData::SystemLogsMap); | 237 new FeedbackData::SystemLogsMap); |
| 237 SystemInformationList* sys_info = feedback_info.system_information.get(); | 238 SystemInformationList* sys_info = feedback_info.system_information.get(); |
| 238 if (sys_info) { | 239 if (sys_info) { |
| 239 for (const SystemInformation& info : *sys_info) | 240 for (const SystemInformation& info : *sys_info) |
| 240 (*sys_logs)[info.key] = info.value; | 241 (*sys_logs)[info.key] = info.value; |
| 241 } | 242 } |
| 242 feedback_data->SetAndCompressSystemInfo(std::move(sys_logs)); | 243 feedback_data->SetAndCompressSystemInfo(std::move(sys_logs)); |
| 243 | 244 |
| 244 FeedbackService* service = | 245 FeedbackService* service = |
| 245 FeedbackPrivateAPI::GetFactoryInstance()->Get(GetProfile())->GetService(); | 246 FeedbackPrivateAPI::GetFactoryInstance()->Get(GetProfile())->GetService(); |
| 246 DCHECK(service); | 247 DCHECK(service); |
| 247 | 248 |
| 248 if (feedback_info.send_histograms) { | 249 if (feedback_info.send_histograms) { |
| 249 scoped_ptr<std::string> histograms(new std::string); | 250 std::unique_ptr<std::string> histograms(new std::string); |
| 250 *histograms = base::StatisticsRecorder::ToJSON(std::string()); | 251 *histograms = base::StatisticsRecorder::ToJSON(std::string()); |
| 251 if (!histograms->empty()) | 252 if (!histograms->empty()) |
| 252 feedback_data->SetAndCompressHistograms(std::move(histograms)); | 253 feedback_data->SetAndCompressHistograms(std::move(histograms)); |
| 253 } | 254 } |
| 254 | 255 |
| 255 service->SendFeedback( | 256 service->SendFeedback( |
| 256 GetProfile(), | 257 GetProfile(), |
| 257 feedback_data, | 258 feedback_data, |
| 258 base::Bind(&FeedbackPrivateSendFeedbackFunction::OnCompleted, this)); | 259 base::Bind(&FeedbackPrivateSendFeedbackFunction::OnCompleted, this)); |
| 259 | 260 |
| 260 return true; | 261 return true; |
| 261 } | 262 } |
| 262 | 263 |
| 263 void FeedbackPrivateSendFeedbackFunction::OnCompleted( | 264 void FeedbackPrivateSendFeedbackFunction::OnCompleted( |
| 264 bool success) { | 265 bool success) { |
| 265 results_ = feedback_private::SendFeedback::Results::Create( | 266 results_ = feedback_private::SendFeedback::Results::Create( |
| 266 success ? feedback_private::STATUS_SUCCESS : | 267 success ? feedback_private::STATUS_SUCCESS : |
| 267 feedback_private::STATUS_DELAYED); | 268 feedback_private::STATUS_DELAYED); |
| 268 SendResponse(true); | 269 SendResponse(true); |
| 269 } | 270 } |
| 270 | 271 |
| 271 } // namespace extensions | 272 } // namespace extensions |
| OLD | NEW |