Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: extensions/browser/api/web_request/web_request_time_tracker.h

Issue 1549643002: Switch to standard integer types in extensions/browser/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clean
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_ 5 #ifndef EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_
6 #define EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_ 6 #define EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_
7 7
8 #include <stddef.h>
9 #include <stdint.h>
10
8 #include <map> 11 #include <map>
9 #include <queue> 12 #include <queue>
10 #include <set> 13 #include <set>
11 #include <string> 14 #include <string>
12 15
13 #include "base/gtest_prod_util.h" 16 #include "base/gtest_prod_util.h"
17 #include "base/macros.h"
14 #include "base/memory/scoped_ptr.h" 18 #include "base/memory/scoped_ptr.h"
15 #include "base/time/time.h" 19 #include "base/time/time.h"
16 #include "url/gurl.h" 20 #include "url/gurl.h"
17 21
18 namespace base { 22 namespace base {
19 class Time; 23 class Time;
20 } 24 }
21 25
22 class ExtensionWebRequestTimeTrackerDelegate { 26 class ExtensionWebRequestTimeTrackerDelegate {
23 public: 27 public:
(...skipping 17 matching lines...) Expand all
41 45
42 // This class keeps monitors how much delay extensions add to network requests 46 // This class keeps monitors how much delay extensions add to network requests
43 // by using the webRequest API. If the delay is sufficient, we will warn the 47 // by using the webRequest API. If the delay is sufficient, we will warn the
44 // user that extensions are slowing down the browser. 48 // user that extensions are slowing down the browser.
45 class ExtensionWebRequestTimeTracker { 49 class ExtensionWebRequestTimeTracker {
46 public: 50 public:
47 ExtensionWebRequestTimeTracker(); 51 ExtensionWebRequestTimeTracker();
48 ~ExtensionWebRequestTimeTracker(); 52 ~ExtensionWebRequestTimeTracker();
49 53
50 // Records the time that a request was created. 54 // Records the time that a request was created.
51 void LogRequestStartTime(int64 request_id, const base::Time& start_time, 55 void LogRequestStartTime(int64_t request_id,
52 const GURL& url, void* profile); 56 const base::Time& start_time,
57 const GURL& url,
58 void* profile);
53 59
54 // Records the time that a request either completed or encountered an error. 60 // Records the time that a request either completed or encountered an error.
55 void LogRequestEndTime(int64 request_id, const base::Time& end_time); 61 void LogRequestEndTime(int64_t request_id, const base::Time& end_time);
56 62
57 // Records an additional delay for the given request caused by the given 63 // Records an additional delay for the given request caused by the given
58 // extension. 64 // extension.
59 void IncrementExtensionBlockTime( 65 void IncrementExtensionBlockTime(const std::string& extension_id,
60 const std::string& extension_id, 66 int64_t request_id,
61 int64 request_id, 67 const base::TimeDelta& block_time);
62 const base::TimeDelta& block_time);
63 68
64 // Records an additional delay for the given request caused by all extensions 69 // Records an additional delay for the given request caused by all extensions
65 // combined. 70 // combined.
66 void IncrementTotalBlockTime( 71 void IncrementTotalBlockTime(int64_t request_id,
67 int64 request_id, 72 const base::TimeDelta& block_time);
68 const base::TimeDelta& block_time);
69 73
70 // Called when an extension has canceled the given request. 74 // Called when an extension has canceled the given request.
71 void SetRequestCanceled(int64 request_id); 75 void SetRequestCanceled(int64_t request_id);
72 76
73 // Called when an extension has redirected the given request to another URL. 77 // Called when an extension has redirected the given request to another URL.
74 void SetRequestRedirected(int64 request_id); 78 void SetRequestRedirected(int64_t request_id);
75 79
76 // Takes ownership of |delegate|. 80 // Takes ownership of |delegate|.
77 void SetDelegate(ExtensionWebRequestTimeTrackerDelegate* delegate); 81 void SetDelegate(ExtensionWebRequestTimeTrackerDelegate* delegate);
78 82
79 private: 83 private:
80 // Timing information for a single request. 84 // Timing information for a single request.
81 struct RequestTimeLog { 85 struct RequestTimeLog {
82 GURL url; // used for debug purposes only 86 GURL url; // used for debug purposes only
83 void* profile; // profile that created the request 87 void* profile; // profile that created the request
84 bool completed; 88 bool completed;
85 base::Time request_start_time; 89 base::Time request_start_time;
86 base::TimeDelta request_duration; 90 base::TimeDelta request_duration;
87 base::TimeDelta block_duration; 91 base::TimeDelta block_duration;
88 std::map<std::string, base::TimeDelta> extension_block_durations; 92 std::map<std::string, base::TimeDelta> extension_block_durations;
89 RequestTimeLog(); 93 RequestTimeLog();
90 ~RequestTimeLog(); 94 ~RequestTimeLog();
91 }; 95 };
92 96
93 // Called after a request finishes, to analyze the delays and warn the user 97 // Called after a request finishes, to analyze the delays and warn the user
94 // if necessary. 98 // if necessary.
95 void Analyze(int64 request_id); 99 void Analyze(int64_t request_id);
96 100
97 // Returns a list of all extension IDs that contributed to delay for |log|. 101 // Returns a list of all extension IDs that contributed to delay for |log|.
98 std::set<std::string> GetExtensionIds(const RequestTimeLog& log) const; 102 std::set<std::string> GetExtensionIds(const RequestTimeLog& log) const;
99 103
100 // A map of recent request IDs to timing info for each request. 104 // A map of recent request IDs to timing info for each request.
101 std::map<int64, RequestTimeLog> request_time_logs_; 105 std::map<int64_t, RequestTimeLog> request_time_logs_;
102 106
103 // A list of recent request IDs that we know about. Used to limit the size of 107 // A list of recent request IDs that we know about. Used to limit the size of
104 // the logs. 108 // the logs.
105 std::queue<int64> request_ids_; 109 std::queue<int64_t> request_ids_;
106 110
107 // The set of recent requests that have been delayed either a large or 111 // The set of recent requests that have been delayed either a large or
108 // moderate amount by extensions. 112 // moderate amount by extensions.
109 std::set<int64> excessive_delays_; 113 std::set<int64_t> excessive_delays_;
110 std::set<int64> moderate_delays_; 114 std::set<int64_t> moderate_delays_;
111 115
112 // Defaults to a delegate that sets warnings in the extension service. 116 // Defaults to a delegate that sets warnings in the extension service.
113 scoped_ptr<ExtensionWebRequestTimeTrackerDelegate> delegate_; 117 scoped_ptr<ExtensionWebRequestTimeTrackerDelegate> delegate_;
114 118
115 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, Basic); 119 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, Basic);
116 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, 120 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest,
117 IgnoreFastRequests); 121 IgnoreFastRequests);
118 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, 122 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest,
119 CancelOrRedirect); 123 CancelOrRedirect);
120 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, Delays); 124 FRIEND_TEST_ALL_PREFIXES(ExtensionWebRequestTimeTrackerTest, Delays);
121 125
122 DISALLOW_COPY_AND_ASSIGN(ExtensionWebRequestTimeTracker); 126 DISALLOW_COPY_AND_ASSIGN(ExtensionWebRequestTimeTracker);
123 }; 127 };
124 128
125 #endif // EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_ 129 #endif // EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_TIME_TRACKER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698