Use mojo for page state serialization

The goal of this change is to move page state serialization away from
its custom format, which increases the complexity of migrating to new
versions and fills the serialization code with unwieldy version checks.

Add a mojom definition for PageState, FrameState and sub-entities
thereof.
Add functions that read from and write to the generated mojo structs.
Serialize and deserialize PageState to/from the pickle using mojo's
generated serialization code.
Separate the existing serialization code into Legacy(Write|Read)
functions.
Expose legacy WritePageState implementation to tests.

R=creis@chromium.org, dcheng@chromium.org

Bug: 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: I331ab6f4593ad2cca9191043a7b9f9746e9423aa
Reviewed-on: https://chromium-review.googlesource.com/647379
Commit-Queue: Patrick Noland <pnoland@google.com>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Charlie Reis <creis@chromium.org>
Reviewed-by: Yuzhu Shen <yzshen@chromium.org>
Reviewed-by: Ɓukasz Anforowicz <lukasza@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512366}

CrOS-Libchrome-Original-Commit: 62b96a287e82191718cd64ac9ce6fc55d9aa993c
2 files changed
tree: e9083602c246c03801c26104cb51586884088aee
  1. base/
  2. build/
  3. components/
  4. dbus/
  5. device/
  6. ipc/
  7. mojo/
  8. testing/
  9. third_party/
  10. ui/