// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module content_settings.mojom;
import "components/content_settings/core/common/content_settings_types.mojom";
import "components/content_settings/core/common/content_settings.mojom";
import "services/network/public/mojom/site_for_cookies.mojom";
import "third_party/blink/public/mojom/tokens/tokens.mojom";
import "url/mojom/origin.mojom";
// An interface to the content settings manager running in the browser process
// associated with a RenderFrameHost instance.
interface ContentSettingsManager {
// Enable cloning the connection, which helps support worker threads created
// from other worker threads.
Clone(pending_receiver<ContentSettingsManager> clone);
enum StorageType {
DATABASE,
LOCAL_STORAGE,
SESSION_STORAGE,
FILE_SYSTEM,
INDEXED_DB,
CACHE,
WEB_LOCKS,
};
// Sent by the renderer process to check whether access to a particular
// storage system is granted by content settings. Sync support is optional
// for when needed; prefer async whenever possible!
// TODO(darin): Ideally this interface would be attached to a document-
// specific browser-side object that would already know the origin info.
// Then these parameters would not need to be passed here.
[Sync]
AllowStorageAccess(
blink.mojom.LocalFrameToken frame_token,
StorageType storage_type,
url.mojom.Origin origin,
network.mojom.SiteForCookies site_for_cookies,
url.mojom.Origin top_frame_origin) => (bool allowed);
// Tells the browser that content in the current page was blocked due to the
// user's content settings.
OnContentBlocked(blink.mojom.LocalFrameToken frame_token,
ContentSettingsType type);
};