| Index: net/disk_cache/sparse_control.cc
|
| ===================================================================
|
| --- net/disk_cache/sparse_control.cc (revision 70512)
|
| +++ net/disk_cache/sparse_control.cc (working copy)
|
| @@ -138,6 +138,29 @@
|
| this, &ChildrenDeleter::DeleteChildren));
|
| }
|
|
|
| +// Logs the end event for |operation|, if all events are being logged.
|
| +void LogOperationEnd(const net::BoundNetLog& net_log,
|
| + disk_cache::SparseControl::SparseOperation operation,
|
| + int result) {
|
| + if (net_log.IsLoggingAllEvents()) {
|
| + net::NetLog::EventType event_type;
|
| + switch (operation) {
|
| + case disk_cache::SparseControl::kReadOperation:
|
| + event_type = net::NetLog::TYPE_SPARSE_CONTROL_READ;
|
| + break;
|
| + case disk_cache::SparseControl::kWriteOperation:
|
| + event_type = net::NetLog::TYPE_SPARSE_CONTROL_WRITE;
|
| + break;
|
| + case disk_cache::SparseControl::kGetRangeOperation:
|
| + event_type = net::NetLog::TYPE_SPARSE_CONTROL_GET_RANGE;
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + net_log.EndEventWithNetErrorCode(event_type, result);
|
| + }
|
| +}
|
| +
|
| } // namespace.
|
|
|
| namespace disk_cache {
|
| @@ -223,6 +246,7 @@
|
| finished_ = false;
|
| abort_ = false;
|
|
|
| + entry_->net_log().BeginEvent(net::NetLog::TYPE_SPARSE_CONTROL, NULL);
|
| DoChildrenIO();
|
|
|
| if (!pending_) {
|
| @@ -610,8 +634,11 @@
|
| void SparseControl::DoChildrenIO() {
|
| while (DoChildIO()) continue;
|
|
|
| - if (pending_ && finished_)
|
| - DoUserCallback();
|
| + if (finished_) {
|
| + entry_->net_log().EndEvent(net::NetLog::TYPE_SPARSE_CONTROL, NULL);
|
| + if (pending_)
|
| + DoUserCallback();
|
| + }
|
| }
|
|
|
| bool SparseControl::DoChildIO() {
|
| @@ -632,14 +659,32 @@
|
| int rv = 0;
|
| switch (operation_) {
|
| case kReadOperation:
|
| + if (entry_->net_log().IsLoggingAllEvents()) {
|
| + entry_->net_log().BeginEvent(
|
| + net::NetLog::TYPE_SPARSE_CONTROL_READ,
|
| + make_scoped_refptr(new net::NetLogSourceParameter(
|
| + "source_dependency",
|
| + child_->net_log().source())));
|
| + }
|
| rv = child_->ReadDataImpl(kSparseData, child_offset_, user_buf_,
|
| child_len_, callback);
|
| break;
|
| case kWriteOperation:
|
| + if (entry_->net_log().IsLoggingAllEvents()) {
|
| + entry_->net_log().BeginEvent(
|
| + net::NetLog::TYPE_SPARSE_CONTROL_WRITE,
|
| + make_scoped_refptr(new net::NetLogSourceParameter(
|
| + "source_dependency",
|
| + child_->net_log().source())));
|
| + }
|
| rv = child_->WriteDataImpl(kSparseData, child_offset_, user_buf_,
|
| child_len_, callback, false);
|
| break;
|
| case kGetRangeOperation:
|
| + if (entry_->net_log().IsLoggingAllEvents()) {
|
| + entry_->net_log().BeginEvent(net::NetLog::TYPE_SPARSE_CONTROL_GET_RANGE,
|
| + NULL);
|
| + }
|
| rv = DoGetAvailableRange();
|
| break;
|
| default:
|
| @@ -712,6 +757,7 @@
|
| }
|
|
|
| void SparseControl::DoChildIOCompleted(int result) {
|
| + LogOperationEnd(entry_->net_log(), operation_, result);
|
| if (result < 0) {
|
| // We fail the whole operation if we encounter an error.
|
| result_ = result;
|
| @@ -737,6 +783,8 @@
|
| // We'll return the current result of the operation, which may be less than
|
| // the bytes to read or write, but the user cancelled the operation.
|
| abort_ = false;
|
| + entry_->net_log().AddEvent(net::NetLog::TYPE_CANCELLED, NULL);
|
| + entry_->net_log().EndEvent(net::NetLog::TYPE_SPARSE_CONTROL, NULL);
|
| DoUserCallback();
|
| return DoAbortCallbacks();
|
| }
|
|
|