1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <map>
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <set>
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string>
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/basictypes.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h"
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/timer/elapsed_timer.h"
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "extensions/common/user_script.h"
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace blink {
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass WebFrame;
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace extensions {
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A struct containing information about a script run.
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstruct ScriptsRunInfo {
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Map of extensions IDs to the executing script paths.
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  typedef std::map<std::string, std::set<std::string> > ExecutingScriptsMap;
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ScriptsRunInfo();
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ~ScriptsRunInfo();
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The number of CSS scripts injected.
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  size_t num_css;
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The number of JS scripts injected.
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  size_t num_js;
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // A map of extension ids to executing script paths.
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ExecutingScriptsMap executing_scripts;
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // The elapsed time since the ScriptsRunInfo was constructed.
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  base::ElapsedTimer timer;
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Log information about a given script run.
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void LogRun(blink::WebFrame* web_frame, UserScript::RunLocation location);
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(ScriptsRunInfo);
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace extensions
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // EXTENSIONS_RENDERER_SCRIPTS_RUN_INFO_H_
50