summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h')
-rw-r--r--chromium/third_party/skia/experimental/PdfViewer/SkPdfReporter.h100
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