| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| // WARNING: Please read the comments below, before including other Mojo types. |
| import "mojo/public/mojom/base/string16.mojom"; |
| import "mojo/public/mojom/base/time.mojom"; |
| import "services/network/public/mojom/referrer_policy.mojom"; |
| import "url/mojom/url.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.mojom"; |
| |
| // This file contains the mojo IDL definitions for PageState and its constituent |
| // parts. The resultant generated code is used to serialize and deserialize |
| // PageState for the purpose of history restore. |
| // |
| // All structures here must maintain backward-compatibility (and hence must be |
| // marked [Stable]) according to mojom backward-compatibility rules. Namely, |
| // when adding new fields: |
| // - Assign your new field an explicit ordinal(@n) and prefer to add fields to |
| // the end of the struct to simplify finding the latest ordinal. |
| // - New fields must be tagged with a [MinVersion=x] attribute where x is larger |
| // than the MinVersion for any existing fields. The next available MinVersion |
| // value is specified at the bottom of this comment block for convenience. |
| // - Only builtin mojom types or other user-defined [Stable] types are allowed |
| // as transitive dependencies here. This is enforced at build time. |
| // - You'll also need to read/write the new field's value when decoding and |
| // encoding PageState, update PageStateSerializationTest to check that your |
| // new field is preserved across serialization, and add a BackwardsCompat |
| // test with associated serialized_vxx.dat file. Look for |
| // DumpExpectedPageStateForBackwardsCompat in |
| // page_state_serialization_unittest for how to do this. |
| // |
| // Don't remove, or change the type of fields; this will break |
| // compatibility. If re-ordering fields, make sure to retain the original |
| // ordinal value. |
| // |
| // Finally, note that any backward-incomptable changes will be caught by a |
| // presubmit check. |
| // |
| // Update the below value if your change introduces fields using it. |
| // Next MinVersion: 3 |
| |
| // Next Ordinal: 4 |
| // FileSystemFile is no longer supported. |
| [Stable, RenamedFrom="content.history.mojom.DEPRECATED_FileSystemFile"] |
| struct DEPRECATED_FileSystemFile { |
| url.mojom.Url filesystem_url@0; |
| uint64 offset@1; |
| uint64 length@2; |
| mojo_base.mojom.Time modification_time@3; |
| }; |
| |
| // Next Ordinal: 4 |
| [Stable, RenamedFrom="content.history.mojom.File"] |
| struct File { |
| mojo_base.mojom.String16 path@0; |
| uint64 offset@1; |
| uint64 length@2; |
| mojo_base.mojom.Time modification_time@3; |
| }; |
| |
| // Next Ordinal: 4 |
| [Stable, RenamedFrom="content.history.mojom.Element"] |
| union Element { |
| string blob_uuid@0; |
| array<uint8> bytes@1; |
| File file@2; |
| // FileSystemFile is no longer supported. |
| DEPRECATED_FileSystemFile DEPRECATED_file_system_file@3; |
| }; |
| |
| // Next Ordinal: 3 |
| [Stable, RenamedFrom="content.history.mojom.RequestBody"] |
| struct RequestBody { |
| array<Element> elements@0; |
| int64 identifier@1; |
| bool contains_sensitive_info@2; |
| }; |
| |
| // Next Ordinal: 3 |
| [Stable, RenamedFrom="content.history.mojom.HttpBody"] |
| struct HttpBody { |
| mojo_base.mojom.String16? http_content_type@0; |
| RequestBody? request_body@1; |
| bool contains_passwords@2 = false; |
| }; |
| |
| [Stable, Extensible, RenamedFrom="content.history.mojom.ScrollRestorationType"] |
| enum ScrollRestorationType { |
| kAuto = 0, |
| kManual = 1 |
| }; |
| |
| // Next Ordinal: 6 |
| [Stable, RenamedFrom="content.history.mojom.ViewState"] |
| struct ViewState { |
| gfx.mojom.PointF visual_viewport_scroll_offset@0; |
| gfx.mojom.Point scroll_offset@1; |
| double page_scale_factor@2; |
| // Serialized scroll anchor fields |
| [MinVersion=1] mojo_base.mojom.String16? scroll_anchor_selector@3; |
| [MinVersion=1] gfx.mojom.PointF? scroll_anchor_offset@4; |
| [MinVersion=1] uint64 scroll_anchor_simhash@5 = 0; |
| }; |
| |
| // Next Ordinal: 13 |
| [Stable, RenamedFrom="content.history.mojom.FrameState"] |
| struct FrameState { |
| mojo_base.mojom.String16? url_string@0; |
| mojo_base.mojom.String16? referrer@1; |
| mojo_base.mojom.String16? target@2; |
| mojo_base.mojom.String16? state_object@3; |
| array<mojo_base.mojom.String16?> document_state@4; |
| ScrollRestorationType scroll_restoration_type@5; |
| ViewState? view_state@6; |
| int64 item_sequence_number@7; |
| int64 document_sequence_number@8; |
| network.mojom.ReferrerPolicy referrer_policy@9; |
| HttpBody http_body@10; |
| array<FrameState> children@11; |
| [MinVersion=2] string? initiator_origin@12; |
| }; |
| |
| // Next Ordinal: 2 |
| [Stable, RenamedFrom="content.history.mojom.PageState"] |
| struct PageState { |
| array<mojo_base.mojom.String16?> referenced_files@0; |
| FrameState top@1; |
| }; |