| OLD | NEW | 
|    1 // Copyright 2014 The Chromium Authors. All rights reserved. |    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 |    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 #include "net/log/net_log_util.h" |    5 #include "net/log/net_log_util.h" | 
|    6  |    6  | 
|    7 #include <algorithm> |    7 #include <algorithm> | 
|    8 #include <string> |    8 #include <string> | 
|    9 #include <utility> |    9 #include <utility> | 
|   10 #include <vector> |   10 #include <vector> | 
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  122     return true; |  122     return true; | 
|  123   if (request1->creation_time() > request2->creation_time()) |  123   if (request1->creation_time() > request2->creation_time()) | 
|  124     return false; |  124     return false; | 
|  125   // If requests were created at the same time, sort by ID.  Mostly matters for |  125   // If requests were created at the same time, sort by ID.  Mostly matters for | 
|  126   // testing purposes. |  126   // testing purposes. | 
|  127   return request1->identifier() < request2->identifier(); |  127   return request1->identifier() < request2->identifier(); | 
|  128 } |  128 } | 
|  129  |  129  | 
|  130 // Returns a Value representing the state of a pre-existing URLRequest when |  130 // Returns a Value representing the state of a pre-existing URLRequest when | 
|  131 // net-internals was opened. |  131 // net-internals was opened. | 
|  132 scoped_ptr<base::Value> GetRequestStateAsValue(const net::URLRequest* request, |  132 std::unique_ptr<base::Value> GetRequestStateAsValue( | 
|  133                                                NetLogCaptureMode capture_mode) { |  133     const net::URLRequest* request, | 
 |  134     NetLogCaptureMode capture_mode) { | 
|  134   return request->GetStateAsValue(); |  135   return request->GetStateAsValue(); | 
|  135 } |  136 } | 
|  136  |  137  | 
|  137 }  // namespace |  138 }  // namespace | 
|  138  |  139  | 
|  139 scoped_ptr<base::DictionaryValue> GetNetConstants() { |  140 std::unique_ptr<base::DictionaryValue> GetNetConstants() { | 
|  140   scoped_ptr<base::DictionaryValue> constants_dict(new base::DictionaryValue()); |  141   std::unique_ptr<base::DictionaryValue> constants_dict( | 
 |  142       new base::DictionaryValue()); | 
|  141  |  143  | 
|  142   // Version of the file format. |  144   // Version of the file format. | 
|  143   constants_dict->SetInteger("logFormatVersion", kLogFormatVersion); |  145   constants_dict->SetInteger("logFormatVersion", kLogFormatVersion); | 
|  144  |  146  | 
|  145   // Add a dictionary with information on the relationship between event type |  147   // Add a dictionary with information on the relationship between event type | 
|  146   // enums and their symbolic names. |  148   // enums and their symbolic names. | 
|  147   constants_dict->Set("logEventTypes", NetLog::GetEventTypesAsValue()); |  149   constants_dict->Set("logEventTypes", NetLog::GetEventTypesAsValue()); | 
|  148  |  150  | 
|  149   // Add a dictionary with information about the relationship between CertStatus |  151   // Add a dictionary with information about the relationship between CertStatus | 
|  150   // flags and their symbolic names. |  152   // flags and their symbolic names. | 
|  151   { |  153   { | 
|  152     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  154     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  153  |  155  | 
|  154     for (size_t i = 0; i < arraysize(kCertStatusFlags); i++) |  156     for (size_t i = 0; i < arraysize(kCertStatusFlags); i++) | 
|  155       dict->SetInteger(kCertStatusFlags[i].name, kCertStatusFlags[i].constant); |  157       dict->SetInteger(kCertStatusFlags[i].name, kCertStatusFlags[i].constant); | 
|  156  |  158  | 
|  157     constants_dict->Set("certStatusFlag", std::move(dict)); |  159     constants_dict->Set("certStatusFlag", std::move(dict)); | 
|  158   } |  160   } | 
|  159  |  161  | 
|  160   // Add a dictionary with information about the relationship between load flag |  162   // Add a dictionary with information about the relationship between load flag | 
|  161   // enums and their symbolic names. |  163   // enums and their symbolic names. | 
|  162   { |  164   { | 
|  163     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  165     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  164  |  166  | 
|  165     for (size_t i = 0; i < arraysize(kLoadFlags); i++) |  167     for (size_t i = 0; i < arraysize(kLoadFlags); i++) | 
|  166       dict->SetInteger(kLoadFlags[i].name, kLoadFlags[i].constant); |  168       dict->SetInteger(kLoadFlags[i].name, kLoadFlags[i].constant); | 
|  167  |  169  | 
|  168     constants_dict->Set("loadFlag", std::move(dict)); |  170     constants_dict->Set("loadFlag", std::move(dict)); | 
|  169   } |  171   } | 
|  170  |  172  | 
|  171   // Add a dictionary with information about the relationship between load state |  173   // Add a dictionary with information about the relationship between load state | 
|  172   // enums and their symbolic names. |  174   // enums and their symbolic names. | 
|  173   { |  175   { | 
|  174     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  176     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  175  |  177  | 
|  176     for (size_t i = 0; i < arraysize(kLoadStateTable); i++) |  178     for (size_t i = 0; i < arraysize(kLoadStateTable); i++) | 
|  177       dict->SetInteger(kLoadStateTable[i].name, kLoadStateTable[i].constant); |  179       dict->SetInteger(kLoadStateTable[i].name, kLoadStateTable[i].constant); | 
|  178  |  180  | 
|  179     constants_dict->Set("loadState", std::move(dict)); |  181     constants_dict->Set("loadState", std::move(dict)); | 
|  180   } |  182   } | 
|  181  |  183  | 
|  182   { |  184   { | 
|  183     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  185     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  184 #define NET_INFO_SOURCE(label, string, value) \ |  186 #define NET_INFO_SOURCE(label, string, value) \ | 
|  185   dict->SetInteger(string, NET_INFO_##label); |  187   dict->SetInteger(string, NET_INFO_##label); | 
|  186 #include "net/base/net_info_source_list.h" |  188 #include "net/base/net_info_source_list.h" | 
|  187 #undef NET_INFO_SOURCE |  189 #undef NET_INFO_SOURCE | 
|  188     constants_dict->Set("netInfoSources", std::move(dict)); |  190     constants_dict->Set("netInfoSources", std::move(dict)); | 
|  189   } |  191   } | 
|  190  |  192  | 
|  191   // Add information on the relationship between net error codes and their |  193   // Add information on the relationship between net error codes and their | 
|  192   // symbolic names. |  194   // symbolic names. | 
|  193   { |  195   { | 
|  194     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  196     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  195  |  197  | 
|  196     for (size_t i = 0; i < arraysize(kNetErrors); i++) |  198     for (size_t i = 0; i < arraysize(kNetErrors); i++) | 
|  197       dict->SetInteger(ErrorToShortString(kNetErrors[i]), kNetErrors[i]); |  199       dict->SetInteger(ErrorToShortString(kNetErrors[i]), kNetErrors[i]); | 
|  198  |  200  | 
|  199     constants_dict->Set("netError", std::move(dict)); |  201     constants_dict->Set("netError", std::move(dict)); | 
|  200   } |  202   } | 
|  201  |  203  | 
|  202   // Add information on the relationship between QUIC error codes and their |  204   // Add information on the relationship between QUIC error codes and their | 
|  203   // symbolic names. |  205   // symbolic names. | 
|  204   { |  206   { | 
|  205     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  207     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  206  |  208  | 
|  207     for (QuicErrorCode error = QUIC_NO_ERROR; error < QUIC_LAST_ERROR; |  209     for (QuicErrorCode error = QUIC_NO_ERROR; error < QUIC_LAST_ERROR; | 
|  208          error = static_cast<QuicErrorCode>(error + 1)) { |  210          error = static_cast<QuicErrorCode>(error + 1)) { | 
|  209       dict->SetInteger(QuicUtils::ErrorToString(error), |  211       dict->SetInteger(QuicUtils::ErrorToString(error), | 
|  210                        static_cast<int>(error)); |  212                        static_cast<int>(error)); | 
|  211     } |  213     } | 
|  212  |  214  | 
|  213     constants_dict->Set("quicError", std::move(dict)); |  215     constants_dict->Set("quicError", std::move(dict)); | 
|  214   } |  216   } | 
|  215  |  217  | 
|  216   // Add information on the relationship between QUIC RST_STREAM error codes |  218   // Add information on the relationship between QUIC RST_STREAM error codes | 
|  217   // and their symbolic names. |  219   // and their symbolic names. | 
|  218   { |  220   { | 
|  219     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  221     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  220  |  222  | 
|  221     for (QuicRstStreamErrorCode error = QUIC_STREAM_NO_ERROR; |  223     for (QuicRstStreamErrorCode error = QUIC_STREAM_NO_ERROR; | 
|  222          error < QUIC_STREAM_LAST_ERROR; |  224          error < QUIC_STREAM_LAST_ERROR; | 
|  223          error = static_cast<QuicRstStreamErrorCode>(error + 1)) { |  225          error = static_cast<QuicRstStreamErrorCode>(error + 1)) { | 
|  224       dict->SetInteger(QuicUtils::StreamErrorToString(error), |  226       dict->SetInteger(QuicUtils::StreamErrorToString(error), | 
|  225                        static_cast<int>(error)); |  227                        static_cast<int>(error)); | 
|  226     } |  228     } | 
|  227  |  229  | 
|  228     constants_dict->Set("quicRstStreamError", std::move(dict)); |  230     constants_dict->Set("quicRstStreamError", std::move(dict)); | 
|  229   } |  231   } | 
|  230  |  232  | 
|  231   // Add information on the relationship between SDCH problem codes and their |  233   // Add information on the relationship between SDCH problem codes and their | 
|  232   // symbolic names. |  234   // symbolic names. | 
|  233   { |  235   { | 
|  234     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  236     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  235  |  237  | 
|  236     for (size_t i = 0; i < arraysize(kSdchProblems); i++) |  238     for (size_t i = 0; i < arraysize(kSdchProblems); i++) | 
|  237       dict->SetInteger(kSdchProblems[i].name, kSdchProblems[i].constant); |  239       dict->SetInteger(kSdchProblems[i].name, kSdchProblems[i].constant); | 
|  238  |  240  | 
|  239     constants_dict->Set("sdchProblemCode", std::move(dict)); |  241     constants_dict->Set("sdchProblemCode", std::move(dict)); | 
|  240   } |  242   } | 
|  241  |  243  | 
|  242   // Information about the relationship between event phase enums and their |  244   // Information about the relationship between event phase enums and their | 
|  243   // symbolic names. |  245   // symbolic names. | 
|  244   { |  246   { | 
|  245     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  247     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  246  |  248  | 
|  247     dict->SetInteger("PHASE_BEGIN", NetLog::PHASE_BEGIN); |  249     dict->SetInteger("PHASE_BEGIN", NetLog::PHASE_BEGIN); | 
|  248     dict->SetInteger("PHASE_END", NetLog::PHASE_END); |  250     dict->SetInteger("PHASE_END", NetLog::PHASE_END); | 
|  249     dict->SetInteger("PHASE_NONE", NetLog::PHASE_NONE); |  251     dict->SetInteger("PHASE_NONE", NetLog::PHASE_NONE); | 
|  250  |  252  | 
|  251     constants_dict->Set("logEventPhase", std::move(dict)); |  253     constants_dict->Set("logEventPhase", std::move(dict)); | 
|  252   } |  254   } | 
|  253  |  255  | 
|  254   // Information about the relationship between source type enums and |  256   // Information about the relationship between source type enums and | 
|  255   // their symbolic names. |  257   // their symbolic names. | 
|  256   constants_dict->Set("logSourceType", NetLog::GetSourceTypesAsValue()); |  258   constants_dict->Set("logSourceType", NetLog::GetSourceTypesAsValue()); | 
|  257  |  259  | 
|  258   // TODO(eroman): This is here for compatibility in loading new log files with |  260   // TODO(eroman): This is here for compatibility in loading new log files with | 
|  259   // older builds of Chrome. Safe to remove this once M45 is on the stable |  261   // older builds of Chrome. Safe to remove this once M45 is on the stable | 
|  260   // channel. |  262   // channel. | 
|  261   constants_dict->Set("logLevelType", new base::DictionaryValue()); |  263   constants_dict->Set("logLevelType", new base::DictionaryValue()); | 
|  262  |  264  | 
|  263   // Information about the relationship between address family enums and |  265   // Information about the relationship between address family enums and | 
|  264   // their symbolic names. |  266   // their symbolic names. | 
|  265   { |  267   { | 
|  266     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  268     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  267  |  269  | 
|  268     dict->SetInteger("ADDRESS_FAMILY_UNSPECIFIED", ADDRESS_FAMILY_UNSPECIFIED); |  270     dict->SetInteger("ADDRESS_FAMILY_UNSPECIFIED", ADDRESS_FAMILY_UNSPECIFIED); | 
|  269     dict->SetInteger("ADDRESS_FAMILY_IPV4", ADDRESS_FAMILY_IPV4); |  271     dict->SetInteger("ADDRESS_FAMILY_IPV4", ADDRESS_FAMILY_IPV4); | 
|  270     dict->SetInteger("ADDRESS_FAMILY_IPV6", ADDRESS_FAMILY_IPV6); |  272     dict->SetInteger("ADDRESS_FAMILY_IPV6", ADDRESS_FAMILY_IPV6); | 
|  271  |  273  | 
|  272     constants_dict->Set("addressFamily", std::move(dict)); |  274     constants_dict->Set("addressFamily", std::move(dict)); | 
|  273   } |  275   } | 
|  274  |  276  | 
|  275   // Information about how the "time ticks" values we have given it relate to |  277   // Information about how the "time ticks" values we have given it relate to | 
|  276   // actual system times.  Time ticks are used throughout since they are stable |  278   // actual system times.  Time ticks are used throughout since they are stable | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  308              active_groups.begin(); |  310              active_groups.begin(); | 
|  309          it != active_groups.end(); ++it) { |  311          it != active_groups.end(); ++it) { | 
|  310       field_trial_groups->AppendString(it->trial_name + ":" + it->group_name); |  312       field_trial_groups->AppendString(it->trial_name + ":" + it->group_name); | 
|  311     } |  313     } | 
|  312     constants_dict->Set("activeFieldTrialGroups", field_trial_groups); |  314     constants_dict->Set("activeFieldTrialGroups", field_trial_groups); | 
|  313   } |  315   } | 
|  314  |  316  | 
|  315   return constants_dict; |  317   return constants_dict; | 
|  316 } |  318 } | 
|  317  |  319  | 
|  318 NET_EXPORT scoped_ptr<base::DictionaryValue> GetNetInfo( |  320 NET_EXPORT std::unique_ptr<base::DictionaryValue> GetNetInfo( | 
|  319     URLRequestContext* context, |  321     URLRequestContext* context, | 
|  320     int info_sources) { |  322     int info_sources) { | 
|  321   // May only be called on the context's thread. |  323   // May only be called on the context's thread. | 
|  322   DCHECK(context->CalledOnValidThread()); |  324   DCHECK(context->CalledOnValidThread()); | 
|  323  |  325  | 
|  324   scoped_ptr<base::DictionaryValue> net_info_dict(new base::DictionaryValue()); |  326   std::unique_ptr<base::DictionaryValue> net_info_dict( | 
 |  327       new base::DictionaryValue()); | 
|  325  |  328  | 
|  326   // TODO(mmenke):  The code for most of these sources should probably be moved |  329   // TODO(mmenke):  The code for most of these sources should probably be moved | 
|  327   // into the sources themselves. |  330   // into the sources themselves. | 
|  328   if (info_sources & NET_INFO_PROXY_SETTINGS) { |  331   if (info_sources & NET_INFO_PROXY_SETTINGS) { | 
|  329     ProxyService* proxy_service = context->proxy_service(); |  332     ProxyService* proxy_service = context->proxy_service(); | 
|  330  |  333  | 
|  331     scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  334     std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  332     if (proxy_service->fetched_config().is_valid()) |  335     if (proxy_service->fetched_config().is_valid()) | 
|  333       dict->Set("original", proxy_service->fetched_config().ToValue()); |  336       dict->Set("original", proxy_service->fetched_config().ToValue()); | 
|  334     if (proxy_service->config().is_valid()) |  337     if (proxy_service->config().is_valid()) | 
|  335       dict->Set("effective", proxy_service->config().ToValue()); |  338       dict->Set("effective", proxy_service->config().ToValue()); | 
|  336  |  339  | 
|  337     net_info_dict->Set(NetInfoSourceToString(NET_INFO_PROXY_SETTINGS), |  340     net_info_dict->Set(NetInfoSourceToString(NET_INFO_PROXY_SETTINGS), | 
|  338                        std::move(dict)); |  341                        std::move(dict)); | 
|  339   } |  342   } | 
|  340  |  343  | 
|  341   if (info_sources & NET_INFO_BAD_PROXIES) { |  344   if (info_sources & NET_INFO_BAD_PROXIES) { | 
|  342     const ProxyRetryInfoMap& bad_proxies_map = |  345     const ProxyRetryInfoMap& bad_proxies_map = | 
|  343         context->proxy_service()->proxy_retry_info(); |  346         context->proxy_service()->proxy_retry_info(); | 
|  344  |  347  | 
|  345     base::ListValue* list = new base::ListValue(); |  348     base::ListValue* list = new base::ListValue(); | 
|  346  |  349  | 
|  347     for (ProxyRetryInfoMap::const_iterator it = bad_proxies_map.begin(); |  350     for (ProxyRetryInfoMap::const_iterator it = bad_proxies_map.begin(); | 
|  348          it != bad_proxies_map.end(); ++it) { |  351          it != bad_proxies_map.end(); ++it) { | 
|  349       const std::string& proxy_uri = it->first; |  352       const std::string& proxy_uri = it->first; | 
|  350       const ProxyRetryInfo& retry_info = it->second; |  353       const ProxyRetryInfo& retry_info = it->second; | 
|  351  |  354  | 
|  352       scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  355       std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  353       dict->SetString("proxy_uri", proxy_uri); |  356       dict->SetString("proxy_uri", proxy_uri); | 
|  354       dict->SetString("bad_until", |  357       dict->SetString("bad_until", | 
|  355                       NetLog::TickCountToString(retry_info.bad_until)); |  358                       NetLog::TickCountToString(retry_info.bad_until)); | 
|  356  |  359  | 
|  357       list->Append(std::move(dict)); |  360       list->Append(std::move(dict)); | 
|  358     } |  361     } | 
|  359  |  362  | 
|  360     net_info_dict->Set(NetInfoSourceToString(NET_INFO_BAD_PROXIES), list); |  363     net_info_dict->Set(NetInfoSourceToString(NET_INFO_BAD_PROXIES), list); | 
|  361   } |  364   } | 
|  362  |  365  | 
|  363   if (info_sources & NET_INFO_HOST_RESOLVER) { |  366   if (info_sources & NET_INFO_HOST_RESOLVER) { | 
|  364     HostResolver* host_resolver = context->host_resolver(); |  367     HostResolver* host_resolver = context->host_resolver(); | 
|  365     DCHECK(host_resolver); |  368     DCHECK(host_resolver); | 
|  366     HostCache* cache = host_resolver->GetHostCache(); |  369     HostCache* cache = host_resolver->GetHostCache(); | 
|  367     if (cache) { |  370     if (cache) { | 
|  368       scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); |  371       std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue()); | 
|  369       scoped_ptr<base::Value> dns_config = host_resolver->GetDnsConfigAsValue(); |  372       std::unique_ptr<base::Value> dns_config = | 
 |  373           host_resolver->GetDnsConfigAsValue(); | 
|  370       if (dns_config) |  374       if (dns_config) | 
|  371         dict->Set("dns_config", std::move(dns_config)); |  375         dict->Set("dns_config", std::move(dns_config)); | 
|  372  |  376  | 
|  373       base::DictionaryValue* cache_info_dict = new base::DictionaryValue(); |  377       base::DictionaryValue* cache_info_dict = new base::DictionaryValue(); | 
|  374  |  378  | 
|  375       cache_info_dict->SetInteger("capacity", |  379       cache_info_dict->SetInteger("capacity", | 
|  376                                   static_cast<int>(cache->max_entries())); |  380                                   static_cast<int>(cache->max_entries())); | 
|  377  |  381  | 
|  378       base::ListValue* entry_list = new base::ListValue(); |  382       base::ListValue* entry_list = new base::ListValue(); | 
|  379  |  383  | 
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  492         stats_dict->SetStringWithoutPathExpansion(stats[i].first, |  496         stats_dict->SetStringWithoutPathExpansion(stats[i].first, | 
|  493                                                   stats[i].second); |  497                                                   stats[i].second); | 
|  494       } |  498       } | 
|  495     } |  499     } | 
|  496     info_dict->Set("stats", stats_dict); |  500     info_dict->Set("stats", stats_dict); | 
|  497  |  501  | 
|  498     net_info_dict->Set(NetInfoSourceToString(NET_INFO_HTTP_CACHE), info_dict); |  502     net_info_dict->Set(NetInfoSourceToString(NET_INFO_HTTP_CACHE), info_dict); | 
|  499   } |  503   } | 
|  500  |  504  | 
|  501   if (info_sources & NET_INFO_SDCH) { |  505   if (info_sources & NET_INFO_SDCH) { | 
|  502     scoped_ptr<base::Value> info_dict; |  506     std::unique_ptr<base::Value> info_dict; | 
|  503     SdchManager* sdch_manager = context->sdch_manager(); |  507     SdchManager* sdch_manager = context->sdch_manager(); | 
|  504     if (sdch_manager) { |  508     if (sdch_manager) { | 
|  505       info_dict = sdch_manager->SdchInfoToValue(); |  509       info_dict = sdch_manager->SdchInfoToValue(); | 
|  506     } else { |  510     } else { | 
|  507       info_dict.reset(new base::DictionaryValue()); |  511       info_dict.reset(new base::DictionaryValue()); | 
|  508     } |  512     } | 
|  509     net_info_dict->Set(NetInfoSourceToString(NET_INFO_SDCH), |  513     net_info_dict->Set(NetInfoSourceToString(NET_INFO_SDCH), | 
|  510                        std::move(info_dict)); |  514                        std::move(info_dict)); | 
|  511   } |  515   } | 
|  512  |  516  | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|  540     // fine, since GetRequestStateAsValue() ignores the capture mode. |  544     // fine, since GetRequestStateAsValue() ignores the capture mode. | 
|  541     NetLog::EntryData entry_data( |  545     NetLog::EntryData entry_data( | 
|  542         NetLog::TYPE_REQUEST_ALIVE, request->net_log().source(), |  546         NetLog::TYPE_REQUEST_ALIVE, request->net_log().source(), | 
|  543         NetLog::PHASE_BEGIN, request->creation_time(), &callback); |  547         NetLog::PHASE_BEGIN, request->creation_time(), &callback); | 
|  544     NetLog::Entry entry(&entry_data, NetLogCaptureMode::Default()); |  548     NetLog::Entry entry(&entry_data, NetLogCaptureMode::Default()); | 
|  545     observer->OnAddEntry(entry); |  549     observer->OnAddEntry(entry); | 
|  546   } |  550   } | 
|  547 } |  551 } | 
|  548  |  552  | 
|  549 }  // namespace net |  553 }  // namespace net | 
| OLD | NEW |