Added `viewport.update`, with tests.