|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "net/disk_cache/net_log_parameters.h" | 
|  |  | 
|  | #include "base/bind.h" | 
|  | #include "base/logging.h" | 
|  | #include "base/strings/string_number_conversions.h" | 
|  | #include "base/values.h" | 
|  | #include "net/base/net_errors.h" | 
|  | #include "net/disk_cache/disk_cache.h" | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | base::Value* NetLogEntryCreationCallback( | 
|  | const disk_cache::Entry* entry, | 
|  | bool created, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | dict->SetString("key", entry->GetKey()); | 
|  | dict->SetBoolean("created", created); | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | base::Value* NetLogReadWriteDataCallback( | 
|  | int index, | 
|  | int offset, | 
|  | int buf_len, | 
|  | bool truncate, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | dict->SetInteger("index", index); | 
|  | dict->SetInteger("offset", offset); | 
|  | dict->SetInteger("buf_len", buf_len); | 
|  | if (truncate) | 
|  | dict->SetBoolean("truncate", truncate); | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | base::Value* NetLogReadWriteCompleteCallback( | 
|  | int bytes_copied, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | DCHECK_NE(bytes_copied, net::ERR_IO_PENDING); | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | if (bytes_copied < 0) { | 
|  | dict->SetInteger("net_error", bytes_copied); | 
|  | } else { | 
|  | dict->SetInteger("bytes_copied", bytes_copied); | 
|  | } | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | base::Value* NetLogSparseOperationCallback( | 
|  | int64 offset, | 
|  | int buff_len, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | // Values can only be created with at most 32-bit integers.  Using a string | 
|  | // instead circumvents that restriction. | 
|  | dict->SetString("offset", base::Int64ToString(offset)); | 
|  | dict->SetInteger("buff_len", buff_len); | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | base::Value* NetLogSparseReadWriteCallback( | 
|  | const net::NetLog::Source& source, | 
|  | int child_len, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | source.AddToEventParameters(dict); | 
|  | dict->SetInteger("child_len", child_len); | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | base::Value* NetLogGetAvailableRangeResultCallback( | 
|  | int64 start, | 
|  | int result, | 
|  | net::NetLog::LogLevel /* log_level */) { | 
|  | base::DictionaryValue* dict = new base::DictionaryValue(); | 
|  | if (result > 0) { | 
|  | dict->SetInteger("length", result); | 
|  | dict->SetString("start",  base::Int64ToString(start)); | 
|  | } else { | 
|  | dict->SetInteger("net_error", result); | 
|  | } | 
|  | return dict; | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | namespace disk_cache { | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogEntryCreationCallback( | 
|  | const Entry* entry, | 
|  | bool created) { | 
|  | DCHECK(entry); | 
|  | return base::Bind(&NetLogEntryCreationCallback, entry, created); | 
|  | } | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogReadWriteDataCallback( | 
|  | int index, | 
|  | int offset, | 
|  | int buf_len, | 
|  | bool truncate) { | 
|  | return base::Bind(&NetLogReadWriteDataCallback, | 
|  | index, offset, buf_len, truncate); | 
|  | } | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogReadWriteCompleteCallback( | 
|  | int bytes_copied) { | 
|  | return base::Bind(&NetLogReadWriteCompleteCallback, bytes_copied); | 
|  | } | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogSparseOperationCallback( | 
|  | int64 offset, | 
|  | int buff_len) { | 
|  | return base::Bind(&NetLogSparseOperationCallback, offset, buff_len); | 
|  | } | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogSparseReadWriteCallback( | 
|  | const net::NetLog::Source& source, | 
|  | int child_len) { | 
|  | return base::Bind(&NetLogSparseReadWriteCallback, source, child_len); | 
|  | } | 
|  |  | 
|  | net::NetLog::ParametersCallback CreateNetLogGetAvailableRangeResultCallback( | 
|  | int64 start, | 
|  | int result) { | 
|  | return base::Bind(&NetLogGetAvailableRangeResultCallback, start, result); | 
|  | } | 
|  |  | 
|  | }  // namespace disk_cache |