initial viewport: This refers to the viewport before any UA or author styles have overridden the viewport given by the window or viewing area of the UA. Note that the initial viewport size will change with the size of the window or viewing area.
actual viewport: This is the viewport you get after the cascaded viewport descriptors, and the following constraining procedure have been applied.
It seems that ChromeClient::pageRect() currently represents the actual viewport (meaning 1 css unit is not necessarily equal to 1px).
It could make sense to clean up ChromeClient::windowRect and ::pageRect, so that we would have initialViewportRect(), actualViewportRect() and windowRect(). That makes their purpose more clear.
From the spec: Relative length values are resolved against initial values. For instance ‘em’s are resolved against the initial value of the font-size property. Viewport lengths (vw, vh, vmin, vmax) are relative to the initial viewport.