Roll src/third_party/skia f16c00e:f89f60f
[chromium-blink-merge.git] / net / base / net_log_util.h
blobd6d6857ae912bb0c1b25c7e161742a97087c5825
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_BASE_NET_LOG_UTIL_H_
6 #define NET_BASE_NET_LOG_UTIL_H_
8 #include <set>
10 #include "base/memory/scoped_ptr.h"
11 #include "net/base/net_export.h"
12 #include "net/base/net_log.h"
14 namespace base {
15 class DictionaryValue;
16 class Value;
19 namespace net {
21 class URLRequestContext;
23 // A set of flags that can be OR'd together to request specific information
24 // about the current state of the URLRequestContext. See GetNetInfo, below.
25 enum NetInfoSource {
26 #define NET_INFO_SOURCE(label, string, value) NET_INFO_ ## label = value,
27 #include "net/base/net_info_source_list.h"
28 #undef NET_INFO_SOURCE
29 NET_INFO_ALL_SOURCES = -1,
32 // Utility methods for creating NetLog dumps.
34 // Create a dictionary containing a legend for net/ constants.
35 NET_EXPORT scoped_ptr<base::DictionaryValue> GetNetConstants();
37 // Retrieves a dictionary containing information about the current state of
38 // |context|. |info_sources| is a set of NetInfoSources OR'd together,
39 // indicating just what information is being requested. Each NetInfoSource adds
40 // one top-level entry to the returned dictionary.
42 // May only be called on |context|'s thread.
43 NET_EXPORT scoped_ptr<base::DictionaryValue> GetNetInfo(
44 URLRequestContext* context, int info_sources);
46 // Takes in a set of contexts and a NetLog::Observer, and passes in
47 // NetLog::Entries to the observer for certain NetLog::Sources with pending
48 // events. This allows requests that were ongoing when logging was started to
49 // have an initial event that has some information. This is particularly useful
50 // for hung requests. Note that these calls are not protected by the NetLog's
51 // lock, so this should generally be invoked before the observer starts watching
52 // the NetLog.
54 // All members of |contexts| must be using the same NetLog, and live on the
55 // current thread.
57 // Currently only creates events for URLRequests.
59 // The reason for not returning a list of NetLog::Entries is that entries don't
60 // own most of their data, so it's simplest just to pass them in to the observer
61 // directly while their data is on the stack.
62 NET_EXPORT void CreateNetLogEntriesForActiveObjects(
63 const std::set<URLRequestContext*>& contexts,
64 NetLog::ThreadSafeObserver* observer);
66 } // namespace net
68 #endif // NET_BASE_NET_LOG_UTIL_H_