| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module optimization_guide.mojom; |
| |
| import "mojo/public/mojom/base/string16.mojom"; |
| |
| // The events at which taking a text dump are supported. |
| enum TextDumpEvent { |
| // The first layout on the page. Equal to |
| // blink::WebMeaningfulLayout::kFinishedParsing. Note that the text dumped at |
| // this event is not deterministic due to races in the renderer. In particular |
| // some text that may have been populated after the "real" first layout event |
| // may also be captured. |
| kFirstLayout, |
| |
| // The page is finished loading. Equal to |
| // blink::WebMeaningfulLayout::kFinishedLoading. |
| kFinishedLoad, |
| }; |
| |
| // A request for a page text dump. |
| struct PageTextDumpRequest { |
| // The maximum size of the requested text dump, in bytes. Note that the actual |
| // dump size may be less than this value on pages with little text. |
| uint32 max_size; |
| |
| // The event at which the text dump should be taken. |
| TextDumpEvent event; |
| }; |
| |
| // Implemented by the browser process to consume the text dumped from the |
| // webpage. The page text is sent in chunks since the total length of the |
| // webpage's text may exceed the mojo pipe size. Chunks are sent in order until |
| // OnChunksEnd is called, after which no further calls will be made on the |
| // instance. |
| interface PageTextConsumer { |
| // Called for each chunk of page text. |
| // Security note: |chunk| should be treated as untrusted data. |
| OnTextDumpChunk(mojo_base.mojom.String16 chunk); |
| |
| // Called when no more chunks will be sent. |
| OnChunksEnd(); |
| }; |
| |
| |
| // Implemented by the renderer process to provide a way to request dumps of the |
| // text from the webpage at specific events. |
| interface PageTextService { |
| // Requests a page text dump with the given request parameters. The dumped |
| // page text will be sent in chunks to consumer. |
| RequestPageTextDump(PageTextDumpRequest request, |
| pending_remote<PageTextConsumer> consumer); |
| }; |