19c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar// Copyright (c) 2012 The Chromium Authors. All rights reserved. 29c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar// Use of this source code is governed by a BSD-style license that can be 39c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar// found in the LICENSE file. 49c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 59c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "net/disk_cache/net_log_parameters.h" 69c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 79c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "base/bind.h" 89c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "base/logging.h" 99c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "base/strings/string_number_conversions.h" 109c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "base/values.h" 119c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "net/base/net_errors.h" 129c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar#include "net/disk_cache/disk_cache.h" 139c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 1440f1265ebd42ece3e7f7917319b56012e8e2bce2Daniel Dunbarnamespace { 15b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 169c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarbase::Value* NetLogEntryCreationCallback( 179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar const disk_cache::Entry* entry, 189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar bool created, 199c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar net::NetLog::LogLevel /* log_level */) { 209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar base::DictionaryValue* dict = new base::DictionaryValue(); 21df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor dict->SetString("key", entry->GetKey()); 22df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor dict->SetBoolean("created", created); 2302633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar return dict; 24f395528158379e7ea9f6ff4bbb791abadca15aabDaniel Dunbar} 2502633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbar 2602633b541b04ad5ffc1c70f4c2feeeb13e607057Daniel Dunbarbase::Value* NetLogReadWriteDataCallback( 27985b825eea7387be10478de0430815ed6a673326Daniel Dunbar int index, 289c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int offset, 29985b825eea7387be10478de0430815ed6a673326Daniel Dunbar int buf_len, 30df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor bool truncate, 31df91ef3d6c55692a0236f67b6c6b134a3bf84098Douglas Gregor net::NetLog::LogLevel /* log_level */) { 32c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar base::DictionaryValue* dict = new base::DictionaryValue(); 33c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar dict->SetInteger("index", index); 34c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar dict->SetInteger("offset", offset); 35c21c485b4fb58ef5d55cf3e523263dd824a2ace4Daniel Dunbar dict->SetInteger("buf_len", buf_len); 369c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar if (truncate) 3731b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar dict->SetBoolean("truncate", truncate); 389c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return dict; 399c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} 409c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 419c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarbase::Value* NetLogReadWriteCompleteCallback( 4247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar int bytes_copied, 4347ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar net::NetLog::LogLevel /* log_level */) { 44871adcf4e41285e3f4c3b62eaa1b2e05b60b92daDaniel Dunbar DCHECK_NE(bytes_copied, net::ERR_IO_PENDING); 451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump base::DictionaryValue* dict = new base::DictionaryValue(); 461eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump if (bytes_copied < 0) { 471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump dict->SetInteger("net_error", bytes_copied); 4847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar } else { 499c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar dict->SetInteger("bytes_copied", bytes_copied); 509c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar } 5131b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar return dict; 5231b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar} 53b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 549c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarbase::Value* NetLogSparseOperationCallback( 55b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int64 offset, 5647ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar int buff_len, 5747ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar net::NetLog::LogLevel /* log_level */) { 58871adcf4e41285e3f4c3b62eaa1b2e05b60b92daDaniel Dunbar base::DictionaryValue* dict = new base::DictionaryValue(); 591eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump // Values can only be created with at most 32-bit integers. Using a string 601eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump // instead circumvents that restriction. 611eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump dict->SetString("offset", base::Int64ToString(offset)); 6247ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar dict->SetInteger("buff_len", buff_len); 63b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar return dict; 64b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar} 65b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 66b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbarbase::Value* NetLogSparseReadWriteCallback( 679c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar const net::NetLog::Source& source, 689c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int child_len, 691eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump net::NetLog::LogLevel /* log_level */) { 70b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar base::DictionaryValue* dict = new base::DictionaryValue(); 719c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar source.AddToEventParameters(dict); 72b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar dict->SetInteger("child_len", child_len); 73b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar return dict; 74b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar} 75b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 76b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbarbase::Value* NetLogGetAvailableRangeResultCallback( 77b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int64 start, 78b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int result, 79b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar net::NetLog::LogLevel /* log_level */) { 80b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar base::DictionaryValue* dict = new base::DictionaryValue(); 81b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar if (result > 0) { 82b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar dict->SetInteger("length", result); 83b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar dict->SetString("start", base::Int64ToString(start)); 849c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar } else { 859c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar dict->SetInteger("net_error", result); 869c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar } 879c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return dict; 8847ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar} 89b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 909c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} // namespace 919c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 92b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbarnamespace disk_cache { 939c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 94b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogEntryCreationCallback( 959c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar const Entry* entry, 969c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar bool created) { 979c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar DCHECK(entry); 989c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return base::Bind(&NetLogEntryCreationCallback, entry, created); 9947ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbar} 100b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 1019c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogReadWriteDataCallback( 1029c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int index, 103b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int offset, 1049c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int buf_len, 105b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar bool truncate) { 1069c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return base::Bind(&NetLogReadWriteDataCallback, 1079c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar index, offset, buf_len, truncate); 1089c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} 1099c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 11047ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogReadWriteCompleteCallback( 111b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int bytes_copied) { 1129c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return base::Bind(&NetLogReadWriteCompleteCallback, bytes_copied); 1139c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} 114b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar 1159c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogSparseOperationCallback( 116b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar int64 offset, 1179c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int buff_len) { 1189c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar return base::Bind(&NetLogSparseOperationCallback, offset, buff_len); 1199c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} 1209c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar 12147ac7d27c44bd64a7d0fc03d4babc196cf2b8230Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogSparseReadWriteCallback( 122b488c1dac8e53206f07103d794a62a3f5012c0f4Daniel Dunbar const net::NetLog::Source& source, 1239c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar int child_len) { 12431b1e5437e7435879fc044afb77ff27096008e72Daniel Dunbar return base::Bind(&NetLogSparseReadWriteCallback, source, child_len); 1259c073ff462eb75ccbb1c4446e21c148f3fc618e1Daniel Dunbar} 126ff7488dc9a766f94daf54d81b03ab9160d0bfd88Daniel Dunbar 127fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbarnet::NetLog::ParametersCallback CreateNetLogGetAvailableRangeResultCallback( 128fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar int64 start, 129fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar int result) { 130fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar return base::Bind(&NetLogGetAvailableRangeResultCallback, start, result); 131fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar} 132fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar 133fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar} // namespace disk_cache 134fbefe6bd6f62a3361813498dc672ab0d6c0d4fd1Daniel Dunbar