Skip to content

Canvas: viewport/tile レンダリングで backing-store 上限を根治する #21

Description

@sousuke0422

背景

セキュリティ/堅牢性ハードニング(PR #18)で、Canvas backing-store の暴走を防ぐため暫定の上限を入れた:

  • 辺長上限 MAX_CANVAS_SIDE_PX = 16_384
  • 面積上限 MAX_CANVAS_AREA_PX(両辺近傍での ~1GiB backing store 回避)
  • 上限超過時は SVG(仮想化)へ fallback

これらはクラッシュ防止の暫定策であり、上限を超えるデータは Canvas で描けない(SVG fallback になる)。

やること(根治)

  • viewport-sized canvas または tiling へ移行し、backing-store をビューポート(または一定タイル)に収める。これにより行数・日付範囲に依存せず、大規模データでも Canvas を破綻なく描画できる。
  • 仮想化を端末 tier に依存させず、設計上の DOM/backing-store cap を常時保証する(監査指摘)。
  • 幅・高さ同時最大のブラウザ統合テストで境界を固定する。

完了条件

  • 暫定 caps(side/area)に頼らず、大規模入力でも Canvas がブラウザ最大辺を超えない。
  • SVG/Canvas 双方で境界テストが緑。

関連: PR #18(暫定 caps + SVG fallback)。監査 Medium「Canvas 面積/寸法」系の根治。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions