# Copyright 2017 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.

import("//mojo/public/tools/bindings/mojom.gni")

mojom("interfaces") {
  sources = [
    "cookie_manager.mojom",
    "fetch_api.mojom",
    "http_request_headers.mojom",
    "restricted_cookie_manager.mojom",
  ]

  public_deps = [
    "//mojo/common:common_custom_types",
    "//url/mojo:url_mojom_gurl",
  ]

  # TODO(crbug/598073): When moving the service implementation to
  # //services/network, add the correct values for export_class_attribute /
  # export_define / export_header here. Context in https://crrev.com/2225673002.

  if (!is_ios) {
    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
    export_header_blink = "third_party/WebKit/public/platform/WebCommon.h"
  }
}
