From 82982b8b0c7d7151a2b038803de4e8beebc94634 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Wed, 24 Nov 2021 21:48:49 -0500 Subject: [PATCH] Scope `willRender` to `PageRenderer` only The `willRender` property introduced to the generic `Renderer` only applies to the `PageRenderer` specialized sub-class. This commit removes it from the root class and declares a `PageRenderer.constructor()` method to accept and assign it. --- src/core/drive/page_renderer.ts | 15 ++++++++++++++- src/core/frames/frame_controller.ts | 9 +-------- src/core/frames/frame_renderer.ts | 5 ++--- src/core/renderer.ts | 4 +--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/core/drive/page_renderer.ts b/src/core/drive/page_renderer.ts index 795ae3748..adb313cb8 100644 --- a/src/core/drive/page_renderer.ts +++ b/src/core/drive/page_renderer.ts @@ -1,9 +1,11 @@ -import { Renderer } from "../renderer" +import { Render, Renderer } from "../renderer" import { PageSnapshot } from "./page_snapshot" import { ReloadReason } from "../native/browser_adapter" import { activateScriptElement, waitForLoad } from "../../util" export class PageRenderer extends Renderer { + private readonly willRender: boolean + static renderElement(currentElement: HTMLBodyElement, newElement: HTMLBodyElement) { if (document.body && newElement instanceof HTMLBodyElement) { document.body.replaceWith(newElement) @@ -12,6 +14,17 @@ export class PageRenderer extends Renderer { } } + constructor( + currentSnapshot: PageSnapshot, + newSnapshot: PageSnapshot, + renderElement: Render, + isPreview: boolean, + willRender = true + ) { + super(currentSnapshot, newSnapshot, renderElement, isPreview) + this.willRender = willRender + } + get shouldRender() { return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical } diff --git a/src/core/frames/frame_controller.ts b/src/core/frames/frame_controller.ts index 788f7661c..58e62a585 100644 --- a/src/core/frames/frame_controller.ts +++ b/src/core/frames/frame_controller.ts @@ -165,14 +165,7 @@ export class FrameController if (newFrameElement) { const snapshot = new Snapshot(newFrameElement) - const renderer = new FrameRenderer( - this, - this.view.snapshot, - snapshot, - FrameRenderer.renderElement, - false, - false - ) + const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false) if (this.view.renderPromise) await this.view.renderPromise this.changeHistory() diff --git a/src/core/frames/frame_renderer.ts b/src/core/frames/frame_renderer.ts index 4f9a17253..63485fda5 100644 --- a/src/core/frames/frame_renderer.ts +++ b/src/core/frames/frame_renderer.ts @@ -28,10 +28,9 @@ export class FrameRenderer extends Renderer { currentSnapshot: Snapshot, newSnapshot: Snapshot, renderElement: Render, - isPreview: boolean, - willRender = true + isPreview: boolean ) { - super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender) + super(currentSnapshot, newSnapshot, renderElement, isPreview) this.delegate = delegate } diff --git a/src/core/renderer.ts b/src/core/renderer.ts index 5e199999c..707458eef 100644 --- a/src/core/renderer.ts +++ b/src/core/renderer.ts @@ -13,17 +13,15 @@ export abstract class Renderer = Snapsh readonly currentSnapshot: S readonly newSnapshot: S readonly isPreview: boolean - readonly willRender: boolean readonly promise: Promise renderElement: Render private resolvingFunctions?: ResolvingFunctions private activeElement: Element | null = null - constructor(currentSnapshot: S, newSnapshot: S, renderElement: Render, isPreview: boolean, willRender = true) { + constructor(currentSnapshot: S, newSnapshot: S, renderElement: Render, isPreview: boolean) { this.currentSnapshot = currentSnapshot this.newSnapshot = newSnapshot this.isPreview = isPreview - this.willRender = willRender this.renderElement = renderElement this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject })) }