1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2020 Google LLC
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci// Make sure SkUserConfig.h is included so #defines are available on
9cb93a386Sopenharmony_ci// Android.
10cb93a386Sopenharmony_ci#include "include/core/SkTypes.h"
11cb93a386Sopenharmony_ci#ifdef SK_ENABLE_ANDROID_UTILS
12cb93a386Sopenharmony_ci#include "client_utils/android/BitmapRegionDecoder.h"
13cb93a386Sopenharmony_ci#include "include/codec/SkAndroidCodec.h"
14cb93a386Sopenharmony_ci#include "include/codec/SkCodec.h"
15cb93a386Sopenharmony_ci#include "tests/Test.h"
16cb93a386Sopenharmony_ci#include "tools/Resources.h"
17cb93a386Sopenharmony_ci
18cb93a386Sopenharmony_ciDEF_TEST(BRD_types, r) {
19cb93a386Sopenharmony_ci    static const struct {
20cb93a386Sopenharmony_ci        const char* name;
21cb93a386Sopenharmony_ci        bool supported;
22cb93a386Sopenharmony_ci    } gRec[] = {
23cb93a386Sopenharmony_ci        { "images/arrow.png", true },
24cb93a386Sopenharmony_ci        { "images/box.gif", false },
25cb93a386Sopenharmony_ci        { "images/baby_tux.webp", true },
26cb93a386Sopenharmony_ci        { "images/brickwork-texture.jpg", true },
27cb93a386Sopenharmony_ci        { "images/color_wheel.ico", false },
28cb93a386Sopenharmony_ci#ifdef SK_CODEC_DECODES_RAW
29cb93a386Sopenharmony_ci        { "images/sample_1mp.dng", false },
30cb93a386Sopenharmony_ci#endif
31cb93a386Sopenharmony_ci        { "images/mandrill.wbmp", false },
32cb93a386Sopenharmony_ci        { "images/randPixels.bmp", false },
33cb93a386Sopenharmony_ci    };
34cb93a386Sopenharmony_ci
35cb93a386Sopenharmony_ci    for (const auto& rec : gRec) {
36cb93a386Sopenharmony_ci        auto data = GetResourceAsData(rec.name);
37cb93a386Sopenharmony_ci        if (!data) return;
38cb93a386Sopenharmony_ci
39cb93a386Sopenharmony_ci        REPORTER_ASSERT(r, SkCodec::MakeFromData(data) != nullptr);
40cb93a386Sopenharmony_ci        REPORTER_ASSERT(r, SkAndroidCodec::MakeFromData(data) != nullptr);
41cb93a386Sopenharmony_ci
42cb93a386Sopenharmony_ci        auto brd = android::skia::BitmapRegionDecoder::Make(data);
43cb93a386Sopenharmony_ci        if (rec.supported) {
44cb93a386Sopenharmony_ci            if (!brd) ERRORF(r, "Failed to create BRD from %s", rec.name);
45cb93a386Sopenharmony_ci        } else {
46cb93a386Sopenharmony_ci            if (brd) ERRORF(r, "Should *not* create BRD from %s", rec.name);
47cb93a386Sopenharmony_ci        }
48cb93a386Sopenharmony_ci    }
49cb93a386Sopenharmony_ci}
50cb93a386Sopenharmony_ci#endif // SK_ENABLE_ANDROID_UTILS
51