blob: 0feaff1d0d6aa269f4da366a4c1e0dd956ecd61d [file] [log] [blame]
// 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() => ();
};