diff options
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h')
-rw-r--r-- | chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h new file mode 100644 index 00000000000..3718154d843 --- /dev/null +++ b/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h @@ -0,0 +1,100 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkPdfReporter_DEFINED +#define SkPdfReporter_DEFINED + +#include "SkPdfConfig.h" + +class SkPdfNativeObject; +class SkPdfContext; + +// TODO(edisonn): ability to turn on asserts for known good files + +// Severity of the issue, if it something interesting info, the result of an NYI feature, +// sme ignorable defect in pdf or a major issue. +enum SkPdfIssueSeverity { + kInfo_SkPdfIssueSeverity, + kCodeWarning_SkPdfIssueSeverity, // e.g. like NYI, PDF file is Ok. + kWarning_SkPdfIssueSeverity, + kIgnoreError_SkPdfIssueSeverity, + kError_SkPdfIssueSeverity, + kFatalError_SkPdfIssueSeverity, + + _kCount__SkPdfIssueSeverity +}; + +// The type of the issue. +enum SkPdfIssue { + kNoIssue_SkPdfIssue, + + kNullObject_SkPdfIssue, + kUnusedObject_SkPdfIssue, + kUnexpectedArraySize_SkPdfIssue, + kMissingEncoding_SkPdfIssue, + kNYI_SkPdfIssue, + kIncostistentSizes_SkPdfIssue, + kMissingRequiredKey_SkPdfIssue, + kRecursiveReferencing_SkPdfIssue, + kStackNestingOverflow_SkPdfIssue, + kStackOverflow_SkPdfIssue, + kIncositentSyntax_SkPdfIssue, + kMissingFont_SkPdfIssue, + kInvalidFont_SkPdfIssue, + kMissingBT_SkPdfIssue, + kOutOfRange_SkPdfIssue, + kUnknownBlendMode_SkPdfIssue, + kMissingExtGState_SkPdfIssue, + kMissingXObject_SkPdfIssue, + kReadStreamError_SkPdfIssue, + kMissingToken_SkPdfIssue, + kBadReference_SkPdfIssue, + kNoFlateLibrary_SkPdfIssue, + kBadStream_SkPdfIssue, + + _kCount__SkPdfIssue +}; + +#ifdef PDF_REPORT + +// Calls SkPdfReport(...) if report is true. +void SkPdfReportIf(bool report, + SkPdfIssueSeverity sev, SkPdfIssue issue, + const char* context, + const SkPdfNativeObject* obj, + SkPdfContext* pdfContext); + +// Reports an issue, along with information where it happened, for example obj can be used to report +// where exactly in th pdf there is a corruption +// TODO(edisonn): add ability to report the callstack +void SkPdfReport(SkPdfIssueSeverity sev, SkPdfIssue issue, + const char* context, + const SkPdfNativeObject* obj, + SkPdfContext* pdfContext); + +// Reports that an object does not have the expected type +// TODO(edisonn): replace with SkPdfReportIfUnexpectedType() to simplify the callers? +// TODO(edisonn): pass the keyword/operator too which triggers the issue. +void SkPdfReportUnexpectedType(SkPdfIssueSeverity sev, + const char* context, + const SkPdfNativeObject* obj, int anyOfTypes, + SkPdfContext* pdfContext); + +// Code only in builds with reporting turn on. +#define SkPdfREPORTCODE(code) code + +#else // !PDF_REPORT + +#define SkPdfReportIf(a,b,c,d,e,f) +#define SkPdfReport(a,b,c,d,e) +#define SkPdfReportUnexpectedType(a,b,c,d,e) +#define SkPdfREPORTCODE(code) + +#endif // PDF_REPORT + +#endif // SkPdfReporter_DEFINED |