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

Commit ced9ebc3 authored by Hardeep Kaur's avatar Hardeep Kaur Committed by Android (Google) Code Review
Browse files

Merge "Page rendering not cancelled exception in renderPage" into main

parents 3c27b31f 44e78e10
Loading
Loading
Loading
Loading
+35 −38
Original line number Diff line number Diff line
@@ -654,7 +654,7 @@ public final class PageContentRepository {

        public void renderPage(int pageIndex, RenderSpec renderSpec,
                OnPageContentAvailableCallback callback) {
            // First, check if we have a rendered page for this index.
            synchronized (mPageToRenderTaskMap) {
                RenderedPage renderedPage = mPageContentCache.getRenderedPage(pageIndex);
                if (renderedPage != null && renderedPage.state == RenderedPage.STATE_RENDERED) {
                    // If we have rendered page with same constraints - done.
@@ -679,20 +679,16 @@ public final class PageContentRepository {
                if (renderTask != null && !renderTask.isCancelled()) {
                    // If not rendered and constraints same....
                    if (renderTask.mRenderSpec.equals(renderSpec)) {
                    if (renderTask.mCallback != null) {
                        // If someone else is already waiting for this page - bad state.
                        if (callback != null && renderTask.mCallback != callback) {
                            throw new IllegalStateException("Page rendering not cancelled");
                        }
                    } else {
                        // No callback means we are preloading so just let the argument
                        // callback be attached to our work in progress.
                        renderTask.mCallback = callback;
                    }
                        return;
                    } else {
                        // If not rendered and constraints changed - cancel rendering.
                        try {
                            renderTask.cancel(true);
                            mPageToRenderTaskMap.remove(pageIndex);
                        } catch (Exception e) {
                            Log.e(LOG_TAG, "Error cancelling RenderPageTask ", e);
                        }
                    }
                }

@@ -701,6 +697,7 @@ public final class PageContentRepository {
                mPageToRenderTaskMap.put(pageIndex, renderTask);
                renderTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
            }
        }

        public void cancelRendering(int pageIndex) {
            RenderPageTask task = mPageToRenderTaskMap.get(pageIndex);