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

import("//build/buildflag_header.gni")
import("//components/safe_browsing/buildflags.gni")

buildflag_header("buildflags") {
  header = "buildflags.h"

  flags = []
  if (safe_browsing_mode == 0) {
    flags += [ "FULL_SAFE_BROWSING=0" ]
    flags += [ "SAFE_BROWSING_CSD=0" ]
    flags += [ "SAFE_BROWSING_DB_LOCAL=0" ]
    flags += [ "SAFE_BROWSING_DB_REMOTE=0" ]
  } else if (safe_browsing_mode == 1) {
    flags += [ "FULL_SAFE_BROWSING=1" ]
    flags += [ "SAFE_BROWSING_CSD=1" ]
    flags += [ "SAFE_BROWSING_DB_LOCAL=1" ]
    flags += [ "SAFE_BROWSING_DB_REMOTE=0" ]
  } else if (safe_browsing_mode == 2) {
    flags += [ "FULL_SAFE_BROWSING=0" ]
    flags += [ "SAFE_BROWSING_CSD=0" ]
    flags += [ "SAFE_BROWSING_DB_LOCAL=0" ]
    flags += [ "SAFE_BROWSING_DB_REMOTE=1" ]
  }
}
