1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/base/file_stream_metrics.h"
7 #include "base/basictypes.h"
8 #include "base/logging.h"
9 #include "base/metrics/histogram.h"
15 const char* FileErrorSourceStrings
[] = {
25 COMPILE_ASSERT(ARRAYSIZE_UNSAFE(FileErrorSourceStrings
) ==
26 FILE_ERROR_SOURCE_COUNT
,
27 file_error_source_enum_has_changed
);
29 void RecordFileErrorTypeCount(FileErrorSource source
) {
30 UMA_HISTOGRAM_ENUMERATION(
31 "Net.FileErrorType_Counts", source
, FILE_ERROR_SOURCE_COUNT
);
36 void RecordFileError(int error
, FileErrorSource source
, bool record
) {
37 LOG(ERROR
) << " " << __FUNCTION__
<< "()"
38 << " error = " << error
39 << " source = " << source
40 << " record = " << record
;
45 RecordFileErrorTypeCount(source
);
47 int bucket
= GetFileErrorUmaBucket(error
);
49 // Fixed values per platform.
50 static const int max_bucket
= MaxFileErrorUmaBucket();
51 static const int max_error
= MaxFileErrorUmaValue();
54 case FILE_ERROR_SOURCE_OPEN
:
55 UMA_HISTOGRAM_ENUMERATION("Net.FileError_Open", error
, max_error
);
56 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_Open", bucket
, max_bucket
);
59 case FILE_ERROR_SOURCE_WRITE
:
60 UMA_HISTOGRAM_ENUMERATION("Net.FileError_Write", error
, max_error
);
61 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_Write", bucket
, max_bucket
);
64 case FILE_ERROR_SOURCE_READ
:
65 UMA_HISTOGRAM_ENUMERATION("Net.FileError_Read", error
, max_error
);
66 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_Read", bucket
, max_bucket
);
69 case FILE_ERROR_SOURCE_SEEK
:
70 UMA_HISTOGRAM_ENUMERATION("Net.FileError_Seek", error
, max_error
);
71 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_Seek", bucket
, max_bucket
);
74 case FILE_ERROR_SOURCE_FLUSH
:
75 UMA_HISTOGRAM_ENUMERATION("Net.FileError_Flush", error
, max_error
);
76 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_Flush", bucket
, max_bucket
);
79 case FILE_ERROR_SOURCE_SET_EOF
:
80 UMA_HISTOGRAM_ENUMERATION("Net.FileError_SetEof", error
, max_error
);
81 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_SetEof", bucket
,
85 case FILE_ERROR_SOURCE_GET_SIZE
:
86 UMA_HISTOGRAM_ENUMERATION("Net.FileError_GetSize", error
, max_error
);
87 UMA_HISTOGRAM_ENUMERATION("Net.FileErrorRange_GetSize", bucket
,
96 const char* GetFileErrorSourceName(FileErrorSource source
) {
97 DCHECK_NE(FILE_ERROR_SOURCE_COUNT
, source
);
98 return FileErrorSourceStrings
[source
];