// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module feed_internals.mojom;
import "mojo/public/mojom/base/time.mojom";
import "url/mojom/url.mojom";
// Feed sorting order options.
enum FeedOrder {
kUnspecified = 0,
kGrouped,
kReverseChron
};
// General properties of Feed suggestions.
struct Properties {
// Whether the Feed feature flag is enabled.
bool is_feed_enabled;
// Whether suggested articles section is expanded.
bool is_feed_visible;
// Whether suggested articles are allowed. Typically set by policy.
bool is_feed_allowed;
// Whether prefetching for offline availability is enabled.
bool is_prefetching_enabled;
// Whether debugging the WebFeed follow intro is enabled.
bool is_web_feed_follow_intro_debug_enabled;
// Whether the legacy feed endpoint should be used.
bool use_feed_query_requests;
// Last load stream status, human readable.
string load_stream_status;
// Feed fetch URL.
url.mojom.Url feed_fetch_url;
// Feed upload actions URL.
url.mojom.Url feed_actions_url;
// Following feed order.
FeedOrder following_feed_order;
};
struct LastFetchProperties {
// Last fetch status.
int32 last_fetch_status;
// Reason for the last fetch.
string last_fetch_trigger;
// Last fetch time. Zero if there was no last fetch.
mojo_base.mojom.TimeDelta last_fetch_time;
// Time until which the scheduler will stop requesting refreshes.
// Zero if there is direct user interaction.
mojo_base.mojom.TimeDelta refresh_suppress_time;
// For test server authentication.
string last_bless_nonce;
// Last net status for actions upload.
int32 last_action_upload_status;
// Last action upload time.
mojo_base.mojom.TimeDelta last_action_upload_time;
};
// Browser interface for the page. Consists of calls for data and hooks for
// interactivity.
interface PageHandler {
// Get general property values.
GetGeneralProperties() => (Properties properties);
// Get last fetch data.
GetLastFetchProperties() => (LastFetchProperties properties);
// Trigger a refresh of the For-you Feed.
RefreshForYouFeed();
// Trigger a refresh of the Following Feed.
RefreshFollowingFeed();
// Trigger a refresh of the Web Feed suggestions.
RefreshWebFeedSuggestions();
// Internal state dump of the Feed library's process scope. Human-readable.
GetFeedProcessScopeDump() => (string dump);
// Record all Feed metrics into a human-readable log.
GetFeedHistograms() => (string log);
// Overrides the scheme, host, and port used to make Feed Query requests.
// Other URL components, like the path, are ignored.
// Empty to clear override.
// This allows for testing the Feed against a development server.
OverrideFeedHost(url.mojom.Url host);
// Overrides the scheme, host, and port used to make Discover API requests.
// Other URL components, like the path, are ignored.
// Empty to clear override.
// This allows for testing the Feed against a development server.
OverrideDiscoverApiEndpoint(url.mojom.Url endpoint_url);
// Overrides the feed stream data with the payload inside a feedui::Slice for
// testing purpose. See go/feed-stream-data-testing for more details.
OverrideFeedStreamData(array<uint8> data);
// Sets whether debugging the WebFeed follow intro is enabled.
SetWebFeedFollowIntroDebugEnabled(bool enabled);
// Sets whether the legacy feed endpoint should be used for Web Feed content
// fetches.
SetUseFeedQueryRequests(bool use_legacy);
// Sets the Following feed order in local preferences.
SetFollowingFeedOrder(FeedOrder order);
};