Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2011 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 "googleurl/src/gurl.h"
      9 #include "net/base/net_errors.h"
     10 #include "net/base/registry_controlled_domain.h"
     11 
     12 namespace net {
     13 
     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     case StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES:
     20       return OK;
     21     case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES:
     22       if (first_party_for_cookies.is_empty())
     23         return OK;  // Empty first-party URL indicates a first-party request.
     24       return RegistryControlledDomainService::SameDomainOrHost(
     25           url, first_party_for_cookies) ? OK : ERR_ACCESS_DENIED;
     26     case StaticCookiePolicy::BLOCK_ALL_COOKIES:
     27       return ERR_ACCESS_DENIED;
     28     default:
     29       NOTREACHED();
     30       return ERR_ACCESS_DENIED;
     31   }
     32 }
     33 
     34 int StaticCookiePolicy::CanSetCookie(const GURL& url,
     35                                      const GURL& first_party_for_cookies,
     36                                      const std::string& cookie_line) const {
     37   switch (type_) {
     38     case StaticCookiePolicy::ALLOW_ALL_COOKIES:
     39       return OK;
     40     case StaticCookiePolicy::BLOCK_SETTING_THIRD_PARTY_COOKIES:
     41     case StaticCookiePolicy::BLOCK_ALL_THIRD_PARTY_COOKIES:
     42       if (first_party_for_cookies.is_empty())
     43         return OK;  // Empty first-party URL indicates a first-party request.
     44       return RegistryControlledDomainService::SameDomainOrHost(
     45           url, first_party_for_cookies) ? OK : ERR_ACCESS_DENIED;
     46     case StaticCookiePolicy::BLOCK_ALL_COOKIES:
     47       return ERR_ACCESS_DENIED;
     48     default:
     49       NOTREACHED();
     50       return ERR_ACCESS_DENIED;
     51   }
     52 }
     53 
     54 }  // namespace net
     55