• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "net/base/static_cookie_policy.h"
6 
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"
11 
12 namespace net {
13 
CanGetCookies(const GURL & url,const GURL & first_party_for_cookies) const14 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;
33   }
34 }
35 
CanSetCookie(const GURL & url,const GURL & first_party_for_cookies) const36 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;
55   }
56 }
57 
58 }  // namespace net
59