chromium/components/content_settings/common/content_settings_manager.mojom

// 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);
};