| Index: content/browser/tracing/background_tracing_manager_impl.cc
|
| diff --git a/content/browser/tracing/background_tracing_manager_impl.cc b/content/browser/tracing/background_tracing_manager_impl.cc
|
| index b636cc8842769bf17d6b0be8d3a137b55dc37aa3..be13706c9181ee3f387537b79ad3309898097137 100644
|
| --- a/content/browser/tracing/background_tracing_manager_impl.cc
|
| +++ b/content/browser/tracing/background_tracing_manager_impl.cc
|
| @@ -9,6 +9,9 @@
|
| #include "content/public/browser/background_tracing_preemptive_config.h"
|
| #include "content/public/browser/background_tracing_reactive_config.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/content_browser_client.h"
|
| +#include "content/public/browser/tracing_delegate.h"
|
| +#include "content/public/common/content_client.h"
|
|
|
| namespace content {
|
|
|
| @@ -74,7 +77,8 @@ BackgroundTracingManagerImpl* BackgroundTracingManagerImpl::GetInstance() {
|
| }
|
|
|
| BackgroundTracingManagerImpl::BackgroundTracingManagerImpl()
|
| - : is_gathering_(false),
|
| + : delegate_(GetContentClient()->browser()->GetTracingDelegate()),
|
| + is_gathering_(false),
|
| is_tracing_(false),
|
| requires_anonymized_data_(true),
|
| trigger_handle_ids_(0) {
|
| @@ -135,6 +139,14 @@ bool BackgroundTracingManagerImpl::SetActiveScenario(
|
| if (is_tracing_)
|
| return false;
|
|
|
| + DCHECK(delegate_);
|
| + DCHECK(config);
|
| + // TODO(oysteine): Retry when time_until_allowed has elapsed.
|
| + if (!delegate_->IsAllowedToBeginBackgroundScenario(
|
| + *config.get(), requires_anonymized_data)) {
|
| + return false;
|
| + }
|
| +
|
| if (!IsSupportedConfig(config.get()))
|
| return false;
|
|
|
| @@ -155,6 +167,13 @@ void BackgroundTracingManagerImpl::EnableRecordingIfConfigNeedsIt() {
|
| if (!config_)
|
| return;
|
|
|
| + DCHECK(config_);
|
| + // TODO(oysteine): Retry later.
|
| + if (!delegate_->IsAllowedToBeginBackgroundScenario(
|
| + *config_.get(), requires_anonymized_data_)) {
|
| + return;
|
| + }
|
| +
|
| if (config_->mode == BackgroundTracingConfig::PREEMPTIVE_TRACING_MODE) {
|
| EnableRecording(GetCategoryFilterStringForCategoryPreset(
|
| static_cast<BackgroundTracingPreemptiveConfig*>(config_.get())
|
| @@ -344,12 +363,20 @@ void BackgroundTracingManagerImpl::BeginFinalizing(
|
| is_gathering_ = true;
|
| is_tracing_ = false;
|
|
|
| - content::TracingController::GetInstance()->DisableRecording(
|
| - content::TracingController::CreateCompressedStringSink(
|
| - data_endpoint_wrapper_));
|
| + DCHECK(delegate_);
|
| + bool is_allowed_finalization = delegate_->IsAllowedToEndBackgroundScenario(
|
| + *config_.get(), requires_anonymized_data_);
|
| +
|
| + scoped_refptr<TracingControllerImpl::TraceDataSink> trace_data_sink;
|
| + if (is_allowed_finalization) {
|
| + trace_data_sink = content::TracingController::CreateCompressedStringSink(
|
| + data_endpoint_wrapper_);
|
| + }
|
| +
|
| + content::TracingController::GetInstance()->DisableRecording(trace_data_sink);
|
|
|
| if (!callback.is_null())
|
| - callback.Run(true);
|
| + callback.Run(is_allowed_finalization);
|
| }
|
|
|
| std::string
|
|
|