// Copyright 2018 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.

// This file was generated by:
//   tools/json_schema_compiler/compiler.py.
// NOTE: The format of types has changed. 'FooType' is now
//   'chrome.safeBrowsingPrivate.FooType'.
// Please run the closure compiler before committing changes.
// See https://chromium.googlesource.com/chromium/src/+/master/docs/closure_compilation.md

/** @fileoverview Externs generated from namespace: safeBrowsingPrivate */

/**
 * @const
 */
chrome.safeBrowsingPrivate = {};

/**
 * @typedef {{
 *   url: string,
 *   userName: string,
 *   isPhishing: boolean
 * }}
 */
chrome.safeBrowsingPrivate.PolicySpecifiedPasswordReuse;

/**
 * @typedef {{
 *   url: string,
 *   fileName: string,
 *   sha256: string,
 *   userName: (string|undefined)
 * }}
 */
chrome.safeBrowsingPrivate.DangerousDownloadInfo;

/**
 * @typedef {{
 *   url: string,
 *   reason: string,
 *   netErrorCode: (number|undefined)
 * }}
 */
chrome.safeBrowsingPrivate.InterstitialInfo;

/**
 * Fired when Chrome detects a reuse of a policy specified password.
 * @type {!ChromeEvent}
 */
chrome.safeBrowsingPrivate.onPolicySpecifiedPasswordReuseDetected;

/**
 * Fired when the user changed their policy specified password.
 * @type {!ChromeEvent}
 */
chrome.safeBrowsingPrivate.onPolicySpecifiedPasswordChanged;

/**
 * Fired when the user opened a dangerous download.
 * @type {!ChromeEvent}
 */
chrome.safeBrowsingPrivate.onDangerousDownloadOpened;

/**
 * Fired when a security interstitial is shown to the user.
 * @type {!ChromeEvent}
 */
chrome.safeBrowsingPrivate.onInterstitialShown;

/**
 * Fired when the user clicked-through a security interstitial.
 * @type {!ChromeEvent}
 */
chrome.safeBrowsingPrivate.onInterstitialProceeded;
