diff options
Diffstat (limited to 'chromium/third_party/skia/dm/DMExpectations.h')
-rw-r--r-- | chromium/third_party/skia/dm/DMExpectations.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/chromium/third_party/skia/dm/DMExpectations.h b/chromium/third_party/skia/dm/DMExpectations.h new file mode 100644 index 00000000000..238d1c5beab --- /dev/null +++ b/chromium/third_party/skia/dm/DMExpectations.h @@ -0,0 +1,46 @@ +#ifndef DMExpectations_DEFINED +#define DMExpectations_DEFINED + +#include "DMTask.h" +#include "gm_expectations.h" + +namespace DM { + +struct Expectations { + virtual ~Expectations() {} + + // Return true if bitmap is the correct output for task, else false. + virtual bool check(const Task& task, SkBitmap bitmap) const = 0; +}; + +class NoExpectations : public Expectations { +public: + NoExpectations() {} + bool check(const Task&, SkBitmap) const SK_OVERRIDE { return true; } +}; + +class JsonExpectations : public Expectations { +public: + explicit JsonExpectations(const char* path) : fGMExpectations(path) {} + + bool check(const Task& task, SkBitmap bitmap) const SK_OVERRIDE { + SkString filename = task.name(); + filename.append(".png"); + const skiagm::Expectations expectations = fGMExpectations.get(filename.c_str()); + + if (expectations.ignoreFailure() || expectations.empty()) { + return true; + } + + // Delay this calculation as long as possible. It's expensive. + const skiagm::GmResultDigest digest(bitmap); + return expectations.match(digest); + } + +private: + skiagm::JsonExpectationsSource fGMExpectations; +}; + +} // namespace DM + +#endif // DMExpectations_DEFINED |