| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/base/net_log_logger.h" | 5 #include "net/base/net_log_logger.h" |
| 6 | 6 |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 net_log()->RemoveThreadSafeObserver(this); | 53 net_log()->RemoveThreadSafeObserver(this); |
| 54 } | 54 } |
| 55 | 55 |
| 56 void NetLogLogger::OnAddEntry(const net::NetLog::Entry& entry) { | 56 void NetLogLogger::OnAddEntry(const net::NetLog::Entry& entry) { |
| 57 // Add a comma and newline for every event but the first. Newlines are needed | 57 // Add a comma and newline for every event but the first. Newlines are needed |
| 58 // so can load partial log files by just ignoring the last line. For this to | 58 // so can load partial log files by just ignoring the last line. For this to |
| 59 // work, lines cannot be pretty printed. | 59 // work, lines cannot be pretty printed. |
| 60 scoped_ptr<base::Value> value(entry.ToValue()); | 60 scoped_ptr<base::Value> value(entry.ToValue()); |
| 61 std::string json; | 61 std::string json; |
| 62 base::JSONWriter::Write(value.get(), &json); | 62 base::JSONWriter::Write(value.get(), &json); |
| 63 fprintf(file_.get(), "%s%s", | 63 fprintf(file_.get(), "%s%s", (added_events_ ? ",\n" : ""), json.c_str()); |
| 64 (added_events_ ? ",\n" : ""), | |
| 65 json.c_str()); | |
| 66 added_events_ = true; | 64 added_events_ = true; |
| 67 } | 65 } |
| 68 | 66 |
| 69 base::DictionaryValue* NetLogLogger::GetConstants() { | 67 base::DictionaryValue* NetLogLogger::GetConstants() { |
| 70 base::DictionaryValue* constants_dict = new base::DictionaryValue(); | 68 base::DictionaryValue* constants_dict = new base::DictionaryValue(); |
| 71 | 69 |
| 72 // Version of the file format. | 70 // Version of the file format. |
| 73 constants_dict->SetInteger("logFormatVersion", kLogFormatVersion); | 71 constants_dict->SetInteger("logFormatVersion", kLogFormatVersion); |
| 74 | 72 |
| 75 // Add a dictionary with information on the relationship between event type | 73 // Add a dictionary with information on the relationship between event type |
| 76 // enums and their symbolic names. | 74 // enums and their symbolic names. |
| 77 constants_dict->Set("logEventTypes", net::NetLog::GetEventTypesAsValue()); | 75 constants_dict->Set("logEventTypes", net::NetLog::GetEventTypesAsValue()); |
| 78 | 76 |
| 79 // Add a dictionary with information about the relationship between load flag | 77 // Add a dictionary with information about the relationship between load flag |
| 80 // enums and their symbolic names. | 78 // enums and their symbolic names. |
| 81 { | 79 { |
| 82 base::DictionaryValue* dict = new base::DictionaryValue(); | 80 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 83 | 81 |
| 84 #define LOAD_FLAG(label, value) \ | 82 #define LOAD_FLAG(label, value) \ |
| 85 dict->SetInteger(# label, static_cast<int>(value)); | 83 dict->SetInteger(#label, static_cast<int>(value)); |
| 86 #include "net/base/load_flags_list.h" | 84 #include "net/base/load_flags_list.h" |
| 87 #undef LOAD_FLAG | 85 #undef LOAD_FLAG |
| 88 | 86 |
| 89 constants_dict->Set("loadFlag", dict); | 87 constants_dict->Set("loadFlag", dict); |
| 90 } | 88 } |
| 91 | 89 |
| 92 // Add a dictionary with information about the relationship between load state | 90 // Add a dictionary with information about the relationship between load state |
| 93 // enums and their symbolic names. | 91 // enums and their symbolic names. |
| 94 { | 92 { |
| 95 base::DictionaryValue* dict = new base::DictionaryValue(); | 93 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 96 | 94 |
| 97 #define LOAD_STATE(label) \ | 95 #define LOAD_STATE(label) dict->SetInteger(#label, net::LOAD_STATE_##label); |
| 98 dict->SetInteger(# label, net::LOAD_STATE_ ## label); | |
| 99 #include "net/base/load_states_list.h" | 96 #include "net/base/load_states_list.h" |
| 100 #undef LOAD_STATE | 97 #undef LOAD_STATE |
| 101 | 98 |
| 102 constants_dict->Set("loadState", dict); | 99 constants_dict->Set("loadState", dict); |
| 103 } | 100 } |
| 104 | 101 |
| 105 // Add information on the relationship between net error codes and their | 102 // Add information on the relationship between net error codes and their |
| 106 // symbolic names. | 103 // symbolic names. |
| 107 { | 104 { |
| 108 base::DictionaryValue* dict = new base::DictionaryValue(); | 105 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 109 | 106 |
| 110 #define NET_ERROR(label, value) \ | 107 #define NET_ERROR(label, value) \ |
| 111 dict->SetInteger(# label, static_cast<int>(value)); | 108 dict->SetInteger(#label, static_cast<int>(value)); |
| 112 #include "net/base/net_error_list.h" | 109 #include "net/base/net_error_list.h" |
| 113 #undef NET_ERROR | 110 #undef NET_ERROR |
| 114 | 111 |
| 115 constants_dict->Set("netError", dict); | 112 constants_dict->Set("netError", dict); |
| 116 } | 113 } |
| 117 | 114 |
| 118 // Add information on the relationship between QUIC error codes and their | 115 // Add information on the relationship between QUIC error codes and their |
| 119 // symbolic names. | 116 // symbolic names. |
| 120 { | 117 { |
| 121 base::DictionaryValue* dict = new base::DictionaryValue(); | 118 base::DictionaryValue* dict = new base::DictionaryValue(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 constants_dict->Set("logLevelType", dict); | 171 constants_dict->Set("logLevelType", dict); |
| 175 } | 172 } |
| 176 | 173 |
| 177 // Information about the relationship between address family enums and | 174 // Information about the relationship between address family enums and |
| 178 // their symbolic names. | 175 // their symbolic names. |
| 179 { | 176 { |
| 180 base::DictionaryValue* dict = new base::DictionaryValue(); | 177 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 181 | 178 |
| 182 dict->SetInteger("ADDRESS_FAMILY_UNSPECIFIED", | 179 dict->SetInteger("ADDRESS_FAMILY_UNSPECIFIED", |
| 183 net::ADDRESS_FAMILY_UNSPECIFIED); | 180 net::ADDRESS_FAMILY_UNSPECIFIED); |
| 184 dict->SetInteger("ADDRESS_FAMILY_IPV4", | 181 dict->SetInteger("ADDRESS_FAMILY_IPV4", net::ADDRESS_FAMILY_IPV4); |
| 185 net::ADDRESS_FAMILY_IPV4); | 182 dict->SetInteger("ADDRESS_FAMILY_IPV6", net::ADDRESS_FAMILY_IPV6); |
| 186 dict->SetInteger("ADDRESS_FAMILY_IPV6", | |
| 187 net::ADDRESS_FAMILY_IPV6); | |
| 188 | 183 |
| 189 constants_dict->Set("addressFamily", dict); | 184 constants_dict->Set("addressFamily", dict); |
| 190 } | 185 } |
| 191 | 186 |
| 192 // Information about how the "time ticks" values we have given it relate to | 187 // Information about how the "time ticks" values we have given it relate to |
| 193 // actual system times. (We used time ticks throughout since they are stable | 188 // actual system times. (We used time ticks throughout since they are stable |
| 194 // across system clock changes). | 189 // across system clock changes). |
| 195 { | 190 { |
| 196 int64 cur_time_ms = (base::Time::Now() - base::Time()).InMilliseconds(); | 191 int64 cur_time_ms = (base::Time::Now() - base::Time()).InMilliseconds(); |
| 197 | 192 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 214 } | 209 } |
| 215 | 210 |
| 216 // "clientInfo" key is required for some NetLogLogger log readers. | 211 // "clientInfo" key is required for some NetLogLogger log readers. |
| 217 // Provide a default empty value for compatibility. | 212 // Provide a default empty value for compatibility. |
| 218 constants_dict->Set("clientInfo", new base::DictionaryValue()); | 213 constants_dict->Set("clientInfo", new base::DictionaryValue()); |
| 219 | 214 |
| 220 return constants_dict; | 215 return constants_dict; |
| 221 } | 216 } |
| 222 | 217 |
| 223 } // namespace net | 218 } // namespace net |
| OLD | NEW |