HomePhabricator

Make "renderer", "engine", and "encoding" sticky across reloads in Differential…

Description

Make "renderer", "engine", and "encoding" sticky across reloads in Differential and Diffusion

Summary:
Ref T13455. Update the other "view state" properties to work like "highlight" now works.

Some complexity here arises from these concerns:

  • In "View Standalone", we render the changeset inline. This is useful for debugging/development, and desirable to retain.
  • In all other cases, we render the changeset with AJAX.

So the client needs to be able to learn about the "state" properties of the changeset on two different flows. Prior to this change, each pathway had a fair amount of unique code.

Then, some bookkeeping issues:

  • At inital rendering time, we may not know which renderer will be selected: it may be based on the client viewport dimensions.
  • Prior to this change, the client didn't separate "value of the property for the changeset as rendered" and "desired value of the property".

Test Plan:

  • Viewed changes in Differential, Diffusion, and in standalone mode.
  • Toggled renderer, character sets, and document engine (this one isn't terribly useful). Reloaded, saw them stick.
  • Started typing a comment, cancelled it, hit the undo UI.

Maniphest Tasks: T13455

Differential Revision: https://secure.phabricator.com/D21138