blob: c23d0105d44fba80ddeb7ce02d86ff6afc4285fc [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 ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
import "url/mojom/url.mojom";
// Interface for a class which is responsible for managing a WebContents in
// chrome/browser and owning associated resources until they are explicity
// released using the provided APIs.
interface WebContentsManager {
// Creates and manages WebContents as defined by the specified |params|. Any
// call to ManageWebContents should be paired with a corresponding call to
// ReleaseWebContents when the resources are no longer needed. To this end,
// the caller must supply an identifier by which to uniquely identify
// WebContents resources. When the rendered content is ready for embedding,
// the supplied callback will be run providing an unguessable |embed_token|.
// In the event of failure, the callback will still be run but no
// |embed_token| will be provided.
ManageWebContents(mojo_base.mojom.UnguessableToken id_token,
ManagedWebContentsParams params)
=> (mojo_base.mojom.UnguessableToken? embed_token);
// Releases any resources associated with the WebContents uniquely identified
// by |id_token|.
ReleaseWebContents(mojo_base.mojom.UnguessableToken id_token);
// Releases any resources associated with any WebContents uniquely identified
// by one of the specified |id_tokens|.
ReleaseAllWebContents(array<mojo_base.mojom.UnguessableToken> id_tokens);
};
// Defines parameters for a managed WebContents.
struct ManagedWebContentsParams {
// The account identifier for the profile.
signin.mojom.AccountId account_id;
// The initial URL.
url.mojom.Url url;
// The minimum desired size. Omitting defaults to (1, 1).
gfx.mojom.Size? min_size_dip;
// The maximum desired size. Omitting defaults to (INT_MAX, INT_MAX).
gfx.mojom.Size? max_size_dip;
// An optional delegate to handle top level browser requests. If omitted, top
// level browser requests will be handled according to default behavior.
ManagedWebContentsOpenUrlDelegate? open_url_delegate_ptr_info;
};
// Interface for a delegate to handle top level browser requests for a
// managed WebContents.
interface ManagedWebContentsOpenUrlDelegate {
// Invoked on a top level browser request to navigate to |url|.
OnOpenUrlFromTab(url.mojom.Url url);
};