LeakCheckTests.cpp revision 74af6e282f8a8f75928a071e8200039517cf5c12
1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include "BakedOpRenderer.h" 18#include "BakedOpDispatcher.h" 19#include "FrameBuilder.h" 20#include "LayerUpdateQueue.h" 21#include "RecordingCanvas.h" 22#include "tests/common/TestUtils.h" 23 24#include <gtest/gtest.h> 25 26using namespace android; 27using namespace android::uirenderer; 28 29const LayerUpdateQueue sEmptyLayerUpdateQueue; 30const FrameBuilder::LightGeometry sLightGeometery = { {100, 100, 100}, 50}; 31const BakedOpRenderer::LightInfo sLightInfo = { 128, 128 }; 32 33RENDERTHREAD_TEST(LeakCheck, saveLayer_overdrawRejection) { 34 auto node = TestUtils::createNode(0, 0, 100, 100, 35 [](RenderProperties& props, RecordingCanvas& canvas) { 36 canvas.saveLayerAlpha(0, 0, 100, 100, 128, SaveFlags::ClipToLayer); 37 canvas.drawRect(0, 0, 100, 100, SkPaint()); 38 canvas.restore(); 39 40 // opaque draw, rejects saveLayer beneath 41 canvas.drawRect(0, 0, 100, 100, SkPaint()); 42 }); 43 RenderState& renderState = renderThread.renderState(); 44 Caches& caches = Caches::getInstance(); 45 46 FrameBuilder frameBuilder(sEmptyLayerUpdateQueue, SkRect::MakeWH(100, 100), 100, 100, 47 TestUtils::createSyncedNodeList(node), sLightGeometery, Caches::getInstance()); 48 BakedOpRenderer renderer(caches, renderState, true, sLightInfo); 49 frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer); 50} 51 52RENDERTHREAD_TEST(LeakCheck, saveLayerUnclipped_simple) { 53 auto node = TestUtils::createNode(0, 0, 200, 200, 54 [](RenderProperties& props, RecordingCanvas& canvas) { 55 canvas.saveLayerAlpha(10, 10, 190, 190, 128, (SaveFlags::Flags)(0)); 56 canvas.drawRect(0, 0, 200, 200, SkPaint()); 57 canvas.restore(); 58 }); 59 RenderState& renderState = renderThread.renderState(); 60 Caches& caches = Caches::getInstance(); 61 62 FrameBuilder frameBuilder(sEmptyLayerUpdateQueue, SkRect::MakeWH(200, 200), 200, 200, 63 TestUtils::createSyncedNodeList(node), sLightGeometery, Caches::getInstance()); 64 BakedOpRenderer renderer(caches, renderState, true, sLightInfo); 65 frameBuilder.replayBakedOps<BakedOpDispatcher>(renderer); 66} 67