| // Copyright 2018 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 eoc_internals.mojom; | 
 |  | 
 | // Distillation of results from a server request for page suggestions. | 
 | struct SuggestionResult { | 
 |   // The URL of the page that the suggestions are for. | 
 |   string url; | 
 |  | 
 |   // The conditions under which the peek was displayed. | 
 |   PeekConditions peek_conditions; | 
 |  | 
 |   // The suggestions for the page. | 
 |   array<Suggestion> suggestions; | 
 | }; | 
 |  | 
 | // Tracks the server-defined parameters for when to show the peek bar. | 
 | struct PeekConditions { | 
 |   // A measure of confidence that auto-peek should be enabled for this response | 
 |   // in the range [0, 1]. | 
 |   float confidence; | 
 |  | 
 |   // The percentage of the page that the user scrolls required for an auto | 
 |   // peek to occur. | 
 |   float page_scroll_percentage; | 
 |  | 
 |   // The minimum time (seconds) the user spends on the page required for | 
 |   // auto peek. | 
 |   float minimum_seconds_on_page; | 
 |  | 
 |   // The maximum number of auto peeks that we can show for this page. | 
 |   int64 maximum_number_of_peeks; | 
 | }; | 
 |  | 
 | // Models a single suggestion. | 
 | struct Suggestion { | 
 |   // The URL for the suggestion. | 
 |   string url; | 
 |  | 
 |   // Title displayed in the suggestion sheet. | 
 |   string title; | 
 |  | 
 |   // Name of the publisher. | 
 |   string publisher_name; | 
 |  | 
 |   // Text snippet displayed on the sheet. | 
 |   string snippet; | 
 |  | 
 |   // The ID of the image displayed for this suggestion. | 
 |   string image_id; | 
 |  | 
 |   // The ID of the favicon for the suggested URL. | 
 |   string favicon_image_id; | 
 | }; | 
 |  | 
 | // Metrics event that was constructed for a page. | 
 | struct MetricEvent { | 
 |   // The URL which the metrics event is for. | 
 |   string url; | 
 |  | 
 |   // Did the sheet peek show. | 
 |   bool sheet_peeked; | 
 |  | 
 |   // Was the toolbar button shown. | 
 |   bool button_shown; | 
 |  | 
 |   // If the peek was closed without being opened. | 
 |   bool sheet_opened; | 
 |  | 
 |   // If the sheet was opened from the peek. | 
 |   bool sheet_closed; | 
 |  | 
 |   // If any suggestion was clicked on from the sheet. | 
 |   bool any_suggestion_taken; | 
 |  | 
 |   // If any suggestion was downloaded from the sheet. | 
 |   bool any_suggestion_downloaded; | 
 | }; | 
 |  | 
 | // Browser interface for the page. Consists of calls for data and hooks for | 
 | // interactivity. | 
 | interface PageHandler { | 
 |   // Get a key/value mapping of properties. | 
 |   GetProperties() => (map<string, string> properties); | 
 |  | 
 |   // Change the triggering time to the given duration. | 
 |   SetTriggerTime(int64 seconds); | 
 |  | 
 |   // Get cached metrics. | 
 |   GetCachedMetricEvents() => (array<MetricEvent> metrics); | 
 |  | 
 |   // Clear the cached metrics. | 
 |   ClearCachedMetricEvents() => (); | 
 |  | 
 |   // Get the cached suggestion results. | 
 |   GetCachedSuggestionResults() => (array<SuggestionResult> results); | 
 |  | 
 |   // Clear the cached suggestions. | 
 |   ClearCachedSuggestionResults() => (); | 
 | }; |