blob: d6e806a3c85073b7e287415ebc2c1a93f9533d1f [file] [log] [blame]
kinuko8cbea052015-04-25 13:35:431// Copyright 2015 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 "content/public/common/origin_util.h"
6
7#include "base/lazy_instance.h"
avia9aa7a82015-12-25 03:06:318#include "base/macros.h"
kinuko8cbea052015-04-25 13:35:439#include "base/stl_util.h"
jame0dcd982017-01-11 03:13:4510#include "content/common/url_schemes.h"
tfarina7ba5a622016-02-23 23:21:4411#include "net/base/url_util.h"
kinuko8cbea052015-04-25 13:35:4312#include "url/gurl.h"
jam09015352017-01-19 01:49:0213#include "url/url_util.h"
kinuko8cbea052015-04-25 13:35:4314
15namespace content {
16
kinuko8cbea052015-04-25 13:35:4317bool IsOriginSecure(const GURL& url) {
18 if (url.SchemeIsCryptographic() || url.SchemeIsFile())
19 return true;
20
21 if (url.SchemeIsFileSystem() && url.inner_url() &&
22 IsOriginSecure(*url.inner_url())) {
23 return true;
24 }
25
26 std::string hostname = url.HostNoBrackets();
27 if (net::IsLocalhost(hostname))
28 return true;
29
jam09015352017-01-19 01:49:0230 if (base::ContainsValue(url::GetSecureSchemes(), url.scheme()))
kinuko8cbea052015-04-25 13:35:4331 return true;
32
jame0dcd982017-01-11 03:13:4533 if (base::ContainsValue(GetSecureOrigins(), url.GetOrigin())) {
kinuko8cbea052015-04-25 13:35:4334 return true;
annekao1db36fd2015-07-29 17:09:1635 }
kinuko8cbea052015-04-25 13:35:4336
37 return false;
38}
39
annekao1db36fd2015-07-29 17:09:1640bool OriginCanAccessServiceWorkers(const GURL& url) {
41 if (url.SchemeIsHTTPOrHTTPS() && IsOriginSecure(url))
42 return true;
43
jame0dcd982017-01-11 03:13:4544 if (base::ContainsValue(GetServiceWorkerSchemes(), url.scheme())) {
annekao1db36fd2015-07-29 17:09:1645 return true;
46 }
47
48 return false;
49}
50
kinuko8cbea052015-04-25 13:35:4351} // namespace content