blob: 367a3c0a350c4a57d9d8227f77d4140588163bd0 [file] [log] [blame]
// Copyright (c) 2012 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_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_PERMISSIONS_H_
#define CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_PERMISSIONS_H_
#include <map>
#include <string>
#include "base/basictypes.h"
class GURL;
namespace extensions {
class InfoMap;
}
namespace net {
class URLRequest;
}
// This class is used to test whether extensions may modify web requests.
class WebRequestPermissions {
public:
// Different host permission checking modes for CanExtensionAccessURL.
enum HostPermissionsCheck {
DO_NOT_CHECK_HOST = 0, // No check.
REQUIRE_HOST_PERMISSION, // Permission needed for given URL.
REQUIRE_ALL_URLS // Permission needed for <all_urls>.
};
// Returns true if the request shall not be reported to extensions.
static bool HideRequest(const extensions::InfoMap* extension_info_map,
const net::URLRequest* request);
// |host_permission_check| controls how permissions are checked with regard to
// |url|.
static bool CanExtensionAccessURL(
const extensions::InfoMap* extension_info_map,
const std::string& extension_id,
const GURL& url,
bool crosses_incognito,
HostPermissionsCheck host_permissions_check);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(WebRequestPermissions);
};
#endif // CHROME_BROWSER_EXTENSIONS_API_WEB_REQUEST_WEB_REQUEST_PERMISSIONS_H_