blob: 508518d220133934cd1a5a27f8b057fb31028d2d [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/renderer/async_scripts_run_info.h"
#include "base/metrics/histogram_macros.h"
#include "content/public/renderer/render_frame.h"
#include "extensions/renderer/scripts_run_info.h"
namespace extensions {
AsyncScriptsRunInfo::AsyncScriptsRunInfo(UserScript::RunLocation location)
: run_location_(location) {}
AsyncScriptsRunInfo::~AsyncScriptsRunInfo() {}
void AsyncScriptsRunInfo::WillExecute(const base::TimeTicks& timestamp) {
if (!last_completed_time_.is_null()) {
switch (run_location_) {
case UserScript::DOCUMENT_END:
UMA_HISTOGRAM_TIMES(
"Extensions.TimeYieldedBetweenContentScriptRuns.DocumentEnd",
timestamp - last_completed_time_);
break;
case UserScript::DOCUMENT_IDLE:
UMA_HISTOGRAM_TIMES(
"Extensions.TimeYieldedBetweenContentScriptRuns.DocumentIdle",
timestamp - last_completed_time_);
break;
// Currently document_start scripts are not async.
default:
break;
}
}
}
void AsyncScriptsRunInfo::OnCompleted(const base::TimeTicks& timestamp,
base::Optional<base::TimeDelta> elapsed) {
last_completed_time_ = timestamp;
if (elapsed) {
ScriptsRunInfo::LogLongInjectionTaskTime(run_location_, *elapsed);
}
}
} // namespace extensions