// Copyright 2016 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 content.mojom;

import "url/mojo/url.mojom";

interface RenderFrameMessageFilter {
  // Sets a cookie. Returns after the cookie write request has been scheduled on
  // the IO thread (the database is modified asynchronously). This ensures that
  // network requests issued after the cookie setter call are processed after
  // the cookie change is committed, and therefore see the change.
  [Sync]
  SetCookie(int32 render_frame_id, url.mojom.Url url,
      url.mojom.Url first_party_for_cookies, string cookie) => ();

  // Used to get cookies for the given URL. This may block waiting for a
  // previous SetCookie message to be processed.
  [Sync]
  GetCookies(int32 render_frame_id, url.mojom.Url url,
      url.mojom.Url first_party_for_cookies) => (string cookies);
};
