// Copyright 2014 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. #ifndef EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_ #define EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_ #include #include #include #include #include "base/macros.h" #include "base/timer/elapsed_timer.h" #include "extensions/common/user_script.h" namespace content { class RenderFrame; } namespace extensions { // A struct containing information about a script run. struct ScriptsRunInfo { // Map of extensions IDs to the executing script paths. typedef std::map > ExecutingScriptsMap; ScriptsRunInfo(content::RenderFrame* render_frame, UserScript::RunLocation location); ~ScriptsRunInfo(); // The number of CSS scripts injected. size_t num_css; // The number of JS scripts injected. size_t num_js; // The number of blocked JS scripts injected. size_t num_blocking_js; // A map of extension ids to executing script paths. ExecutingScriptsMap executing_scripts; // The elapsed time since the ScriptsRunInfo was constructed. base::ElapsedTimer timer; // Log information about a given script run. void LogRun(); private: // The routinig id to use to notify the browser of any injections. Since the // frame may be deleted in injection, we don't hold on to a reference to it // directly. int routing_id_; // The run location at which injection is happening. UserScript::RunLocation run_location_; // The url of the frame, preserved for the same reason as the routing id. GURL frame_url_; DISALLOW_COPY_AND_ASSIGN(ScriptsRunInfo); }; } // namespace extensions #endif // EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_