blob: 99c5075ed23c5df5d4b5ccdd28bf5f1fee9ed966 [file] [log] [blame]
// Copyright (c) 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.
#ifndef CHROME_BROWSER_DOWNLOAD_TRUSTED_SOURCES_MANAGER_H_
#define CHROME_BROWSER_DOWNLOAD_TRUSTED_SOURCES_MANAGER_H_
#include <memory>
#include "base/macros.h"
#include "net/proxy_resolution/proxy_bypass_rules.h"
class GURL;
// Identifies if a URL is from a trusted source.
class TrustedSourcesManager {
public:
virtual ~TrustedSourcesManager();
// Creates a platform-dependent instance of TrustedSourcesManager.
//
// A trusted sources manager has a list of sources that can be trusted with
// downloads, extracted from the kTrustedDownloadSources command line switch.
// An example usage is to specify that files downloaded from trusted sites
// don't need to be scanned by SafeBrowsing when the
// SafeBrowsingForTrustedSourcesEnabled policy is set to false.
//
// On creation the list of trusted sources is NULL.
//
// If the platform is Windows, the kTrustedDownloadSources value is ignored,
// the security zone mapping is used instead to determine whether the source
// is trusted or not.
//
static std::unique_ptr<TrustedSourcesManager> Create();
// Returns true if the source of this URL is part of the trusted sources.
virtual bool IsFromTrustedSource(const GURL& url) const;
protected:
// Must use Create.
TrustedSourcesManager();
private:
// We are using ProxyBypassRules because they have the functionality that we
// want, but we are not using it for proxy bypass.
net::ProxyBypassRules rules_;
DISALLOW_COPY_AND_ASSIGN(TrustedSourcesManager);
};
#endif // CHROME_BROWSER_DOWNLOAD_TRUSTED_SOURCES_MANAGER_H_