// 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