1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module glic.mojom;
import "url/mojom/url.mojom";
// Factory for PageHandler used in chrome://glic-fre.
interface FrePageHandlerFactory {
// Creates the PageHandler for chrome://glic-fre.
CreatePageHandler(pending_receiver<FrePageHandler> receiver);
};
// Page handler for the glic FRE WebUI.
interface FrePageHandler {
// Closes the glic FRE modal dialog and opens the widget hosting the main
// glic WebUI.
AcceptFre();
// Closes the glic FRE modal dialog. The `panel` identifies which panel was
// closed.
DismissFre(FreWebUiState panel);
// Called when the user clicks 'Try Again'.
FreReloaded();
// Prepare the webview for loading the client. Sync Google account sign-in
// cookies to the webview, if necessary, so that it can sign-in automatically.
// If this returns false, the web client cannot be created due to an error.
PrepareForClient() => (bool success);
// Opens `url` in a new backgrounded tab when a link is clicked in the FRE
// modal dialog if `url` uses the Google domain.
ValidateAndOpenLinkInNewTab(url.mojom.Url url);
// Notifies the PageHandler that the state of the WebUI has changed.
WebUiStateChanged(FreWebUiState new_state);
// Notifies the PageHandler that the FRE exceeded the loading timeout and
// entered the error state.
ExceededTimeoutError();
// Signal to the fre controller that the web ui framework has completed
// loading and the remote web content is about to start loading in the
// webview. This is used to record timing metrics.
LogWebUiLoadComplete();
};
// LINT.IfChange(FreWebUiState)
enum FreWebUiState {
// Glic fre app controller not started.
kUninitialized,
// Web client begins loading; no visible UI.
kBeginLoading,
// Loading panel is displayed. This state, combined with the `hold-loading`
// state, will be held for `kMinHoldLoadingTimeMs` if entered.
kShowLoading,
// Loading panel is still displayed, but the web client is ready. This
// state will be held for the remainder of `kMinHoldLoadingTimeMs`.
kHoldLoading,
// Loading panel is displayed until web client is ready, or until
// `kMaxWaitTimeMs` timeout is reached.
kFinishLoading,
// "Something went wrong" error panel is displayed.
kError,
// Connection offline panel is displayed.
kOffline,
// Web view is displayed.
kReady,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/glic/enums.xml:FreWebUiState)
|