| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/subresource_filter/core/common/first_party_origin.h" | 5 #include "components/subresource_filter/core/common/first_party_origin.h" |
| 6 | 6 |
| 7 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 7 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 8 | 8 |
| 9 namespace subresource_filter { | 9 namespace subresource_filter { |
| 10 | 10 |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 bool IsThirdPartyImpl(const GURL& url, const url::Origin& first_party_origin) { | 13 bool IsThirdPartyImpl(const GURL& url, const url::Origin& first_party_origin) { |
| 14 return !net::registry_controlled_domains::SameDomainOrHost( | 14 return !net::registry_controlled_domains::SameDomainOrHost( |
| 15 url, first_party_origin, | 15 url, first_party_origin, |
| 16 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); | 16 net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); |
| 17 } | 17 } |
| 18 | 18 |
| 19 } // namespace | 19 } // namespace |
| 20 | 20 |
| 21 FirstPartyOrigin::FirstPartyOrigin(url::Origin document_origin) | 21 FirstPartyOrigin::FirstPartyOrigin(url::Origin document_origin) |
| 22 : document_origin_(std::move(document_origin)) {} | 22 : document_origin_(std::move(document_origin)) {} |
| 23 | 23 |
| 24 bool FirstPartyOrigin::IsThirdParty(const GURL& url) const { | 24 bool FirstPartyOrigin::IsThirdParty(const GURL& url) const { |
| 25 if (document_origin_.unique()) | 25 if (document_origin_.opaque()) |
| 26 return true; | 26 return true; |
| 27 base::StringPiece host_piece = url.host_piece(); | 27 base::StringPiece host_piece = url.host_piece(); |
| 28 if (!last_checked_host_.empty() && host_piece == last_checked_host_) | 28 if (!last_checked_host_.empty() && host_piece == last_checked_host_) |
| 29 return last_checked_host_was_third_party_; | 29 return last_checked_host_was_third_party_; |
| 30 | 30 |
| 31 last_checked_host_.assign(host_piece.data(), host_piece.size()); | 31 last_checked_host_.assign(host_piece.data(), host_piece.size()); |
| 32 last_checked_host_was_third_party_ = IsThirdPartyImpl(url, document_origin_); | 32 last_checked_host_was_third_party_ = IsThirdPartyImpl(url, document_origin_); |
| 33 return last_checked_host_was_third_party_; | 33 return last_checked_host_was_third_party_; |
| 34 } | 34 } |
| 35 | 35 |
| 36 bool FirstPartyOrigin::IsThirdParty(const GURL& url, | 36 bool FirstPartyOrigin::IsThirdParty(const GURL& url, |
| 37 const url::Origin& first_party_origin) { | 37 const url::Origin& first_party_origin) { |
| 38 return first_party_origin.unique() || | 38 return first_party_origin.opaque() || |
| 39 IsThirdPartyImpl(url, first_party_origin); | 39 IsThirdPartyImpl(url, first_party_origin); |
| 40 } | 40 } |
| 41 | 41 |
| 42 } // namespace subresouce_filter | 42 } // namespace subresouce_filter |
| OLD | NEW |