Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51cc13fe authored by Chris Craik's avatar Chris Craik Committed by android-build-merger
Browse files

Merge "Fix WebView disappearing" into nyc-dev

am: ed5916d2

* commit 'ed5916d2':
  Fix WebView disappearing
parents fd1ce2b9 ed5916d2
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -24,8 +24,8 @@
namespace android {
namespace android {
namespace uirenderer {
namespace uirenderer {



#define MIL_PIX 1000000
static Rect sUnreasonablyLargeBounds(-10000, -10000, 10000, 10000);
static Rect sUnreasonablyLargeBounds(-MIL_PIX, -MIL_PIX, MIL_PIX, MIL_PIX);


static const Rect& getConservativeOpBounds(const ClipBase* clip) {
static const Rect& getConservativeOpBounds(const ClipBase* clip) {
    // if op is clipped, that rect can be used, but otherwise just use a conservatively large rect
    // if op is clipped, that rect can be used, but otherwise just use a conservatively large rect
@@ -595,7 +595,7 @@ void RecordingCanvas::callDrawGLFunction(Functor* functor) {
    mDisplayList->functors.push_back(functor);
    mDisplayList->functors.push_back(functor);
    auto clip = getRecordedClip();
    auto clip = getRecordedClip();
    addOp(alloc().create_trivial<FunctorOp>(
    addOp(alloc().create_trivial<FunctorOp>(
            getConservativeOpBounds(clip), // TODO: explicitly define bounds
            getConservativeOpBounds(clip),
            *(mState.currentSnapshot()->transform),
            *(mState.currentSnapshot()->transform),
            clip,
            clip,
            functor));
            functor));
+24 −0
Original line number Original line Diff line number Diff line
@@ -349,6 +349,29 @@ RENDERTHREAD_TEST(FrameBuilder, textureLayer) {
    EXPECT_EQ(1, renderer.getIndex());
    EXPECT_EQ(1, renderer.getIndex());
}
}


TEST(FrameBuilder, functor_reject) {
    class FunctorTestRenderer : public TestRendererBase {
    public:
        void onFunctorOp(const FunctorOp& op, const BakedOpState& state) override {
            EXPECT_EQ(0, mIndex++);
        }
    };
    Functor noopFunctor;

    // 1 million pixel tall view, scrolled down 80%
    auto scrolledFunctorView = TestUtils::createNode(0, 0, 400, 1000000,
            [&noopFunctor](RenderProperties& props, RecordingCanvas& canvas) {
        canvas.translate(0, -800000);
        canvas.callDrawGLFunction(&noopFunctor);
    });

    FrameBuilder frameBuilder(sEmptyLayerUpdateQueue, SkRect::MakeWH(200, 200), 200, 200,
            TestUtils::createSyncedNodeList(scrolledFunctorView), sLightGeometry, nullptr);
    FunctorTestRenderer renderer;
    frameBuilder.replayBakedOps<TestDispatcher>(renderer);
    EXPECT_EQ(1, renderer.getIndex()) << "Functor should not be rejected";
}

TEST(FrameBuilder, renderNode) {
TEST(FrameBuilder, renderNode) {
    class RenderNodeTestRenderer : public TestRendererBase {
    class RenderNodeTestRenderer : public TestRendererBase {
    public:
    public:
@@ -391,6 +414,7 @@ TEST(FrameBuilder, renderNode) {
            TestUtils::createSyncedNodeList(parent), sLightGeometry, nullptr);
            TestUtils::createSyncedNodeList(parent), sLightGeometry, nullptr);
    RenderNodeTestRenderer renderer;
    RenderNodeTestRenderer renderer;
    frameBuilder.replayBakedOps<TestDispatcher>(renderer);
    frameBuilder.replayBakedOps<TestDispatcher>(renderer);
    EXPECT_EQ(2, renderer.getIndex());
}
}


TEST(FrameBuilder, clipped) {
TEST(FrameBuilder, clipped) {