Add support for precursor origin to session history navigations

url::Origin is at this time capable of storing information for opaque origins
that indicates where they have come from - precursor origin. This is very
useful information for making security decisions, such as which process to
place a navigation or verifying that an opaque origin sent by renderer process
is expected/allowed.

This CL adds support for the browser process to tell the renderer process
which origin to commit a specific navigation in. It is currently only used for
session history navigations, as the origin in which they have committed is
stored in FrameNavigationEntry. This allows navigations to session history
entries with URLs that don't have embedded origin (e.g. about:blank, data:) to
still commit in the origin which they initially were created in.

Bug: 882053
Change-Id: I71f8bace6b017973fc79465b1809ca0ff9794465
Reviewed-on: https://chromium-review.googlesource.com/c/1375390
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Nasko Oskov <nasko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621820}
23 files changed