Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / net / base / static_cookie_policy.cc
blob021cacef4cae27310773b60e0e5ca1351d4e51ae
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/base/static_cookie_policy.h"
7 #include "base/logging.h"
8 #include "net/base/net_errors.h"
9 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
10 #include "url/gurl.h"
12 namespace net {
14 int StaticCookiePolicy::CanGetCookies(
15 const GURL& url,
16 const GURL& first_party_for_cookies) const {
17 switch (type_) {
18 case StaticCookiePolicy::ALLOW_ALL_COOKIES:
19 return OK;
20 case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES:
21 if (first_party_for_cookies.is_empty())
22 return OK; // Empty first-party URL indicates a first-party request.
23 return registry_controlled_domains::SameDomainOrHost(
24 url,
25 first_party_for_cookies,
26 registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES) ?
27 OK : ERR_ACCESS_DENIED;
28 case StaticCookiePolicy::BLOCK_ALL_COOKIES:
29 return ERR_ACCESS_DENIED;
30 default:
31 NOTREACHED();
32 return ERR_ACCESS_DENIED;
36 int StaticCookiePolicy::CanSetCookie(
37 const GURL& url,
38 const GURL& first_party_for_cookies) const {
39 switch (type_) {
40 case StaticCookiePolicy::ALLOW_ALL_COOKIES:
41 return OK;
42 case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES:
43 if (first_party_for_cookies.is_empty())
44 return OK; // Empty first-party URL indicates a first-party request.
45 return registry_controlled_domains::SameDomainOrHost(
46 url,
47 first_party_for_cookies,
48 registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES) ?
49 OK : ERR_ACCESS_DENIED;
50 case StaticCookiePolicy::BLOCK_ALL_COOKIES:
51 return ERR_ACCESS_DENIED;
52 default:
53 NOTREACHED();
54 return ERR_ACCESS_DENIED;
58 } // namespace net