Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 | 31 |
| 32 #include "platform/weborigin/KURL.h" | 32 #include "platform/weborigin/KURL.h" |
| 33 #include "platform/weborigin/KnownPorts.h" | 33 #include "platform/weborigin/KnownPorts.h" |
| 34 #include "platform/weborigin/SchemeRegistry.h" | 34 #include "platform/weborigin/SchemeRegistry.h" |
| 35 #include "platform/weborigin/SecurityOriginCache.h" | 35 #include "platform/weborigin/SecurityOriginCache.h" |
| 36 #include "platform/weborigin/SecurityPolicy.h" | 36 #include "platform/weborigin/SecurityPolicy.h" |
| 37 #include "wtf/HexNumber.h" | 37 #include "wtf/HexNumber.h" |
| 38 #include "wtf/MainThread.h" | 38 #include "wtf/MainThread.h" |
| 39 #include "wtf/StdLibExtras.h" | 39 #include "wtf/StdLibExtras.h" |
| 40 #include "wtf/text/StringBuilder.h" | 40 #include "wtf/text/StringBuilder.h" |
| 41 #include <url/url_canon_ip.h> | |
|
abarth-chromium
2014/06/10 17:09:11
#include "url/url_canon_ip.h"
You should probably
eroman
2014/06/10 18:47:26
Done.
| |
| 41 | 42 |
| 42 namespace WebCore { | 43 namespace WebCore { |
| 43 | 44 |
| 44 const int InvalidPort = 0; | 45 const int InvalidPort = 0; |
| 45 const int MaxAllowedPort = 65535; | 46 const int MaxAllowedPort = 65535; |
| 46 | 47 |
| 47 static SecurityOriginCache* s_originCache = 0; | 48 static SecurityOriginCache* s_originCache = 0; |
| 48 | 49 |
| 49 static bool schemeRequiresAuthority(const KURL& url) | 50 static bool schemeRequiresAuthority(const KURL& url) |
| 50 { | 51 { |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 368 | 369 |
| 369 if (SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated(protocol)) | 370 if (SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated(protocol)) |
| 370 return m_protocol == protocol || SecurityPolicy::isAccessToURLWhiteListe d(this, url); | 371 return m_protocol == protocol || SecurityPolicy::isAccessToURLWhiteListe d(this, url); |
| 371 | 372 |
| 372 if (SchemeRegistry::shouldTreatURLSchemeAsLocal(protocol)) | 373 if (SchemeRegistry::shouldTreatURLSchemeAsLocal(protocol)) |
| 373 return canLoadLocalResources() || SecurityPolicy::isAccessToURLWhiteList ed(this, url); | 374 return canLoadLocalResources() || SecurityPolicy::isAccessToURLWhiteList ed(this, url); |
| 374 | 375 |
| 375 return true; | 376 return true; |
| 376 } | 377 } |
| 377 | 378 |
| 379 bool SecurityOrigin::canAccessFeatureRequiringSecureOrigin() const | |
| 380 { | |
| 381 ASSERT(m_protocol != "data"); | |
| 382 return isLocal() || isLocalhost() || SchemeRegistry::shouldTreatURLSchemeAsS ecure(m_protocol); | |
|
abarth-chromium
2014/06/10 17:09:11
We should move isLocalhost() to the end because it
eroman
2014/06/10 18:47:26
Good point! Done.
Similarly, I moved the secure s
| |
| 383 } | |
| 384 | |
| 378 SecurityOrigin::Policy SecurityOrigin::canShowNotifications() const | 385 SecurityOrigin::Policy SecurityOrigin::canShowNotifications() const |
| 379 { | 386 { |
| 380 if (m_universalAccess) | 387 if (m_universalAccess) |
| 381 return AlwaysAllow; | 388 return AlwaysAllow; |
| 382 if (isUnique()) | 389 if (isUnique()) |
| 383 return AlwaysDeny; | 390 return AlwaysDeny; |
| 384 return Ask; | 391 return Ask; |
| 385 } | 392 } |
| 386 | 393 |
| 387 void SecurityOrigin::grantLoadLocalResources() | 394 void SecurityOrigin::grantLoadLocalResources() |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 402 { | 409 { |
| 403 ASSERT(isLocal()); | 410 ASSERT(isLocal()); |
| 404 m_enforceFilePathSeparation = true; | 411 m_enforceFilePathSeparation = true; |
| 405 } | 412 } |
| 406 | 413 |
| 407 bool SecurityOrigin::isLocal() const | 414 bool SecurityOrigin::isLocal() const |
| 408 { | 415 { |
| 409 return SchemeRegistry::shouldTreatURLSchemeAsLocal(m_protocol); | 416 return SchemeRegistry::shouldTreatURLSchemeAsLocal(m_protocol); |
| 410 } | 417 } |
| 411 | 418 |
| 419 bool SecurityOrigin::isLocalhost() const | |
| 420 { | |
| 421 if (m_host == "localhost") | |
| 422 return true; | |
| 423 | |
| 424 if (m_host == "[::1]") | |
| 425 return true; | |
| 426 | |
| 427 // Test if m_host matches 127.0.0.1/8 | |
| 428 ASSERT(m_host.containsOnlyASCII()); | |
| 429 CString hostAscii = m_host.ascii(); | |
| 430 Vector<uint8, 4> ipNumber; | |
| 431 ipNumber.resize(4); | |
| 432 | |
| 433 int numComponents; | |
| 434 url::Component hostComponent(0, hostAscii.length()); | |
| 435 url::CanonHostInfo::Family family = url::IPv4AddressToNumber( | |
| 436 hostAscii.data(), hostComponent, &(ipNumber)[0], &numComponents); | |
| 437 if (family != url::CanonHostInfo::IPV4) | |
| 438 return false; | |
| 439 return ipNumber[0] == 127; | |
| 440 } | |
| 441 | |
| 412 String SecurityOrigin::toString() const | 442 String SecurityOrigin::toString() const |
| 413 { | 443 { |
| 414 if (isUnique()) | 444 if (isUnique()) |
| 415 return "null"; | 445 return "null"; |
| 416 if (m_protocol == "file" && m_enforceFilePathSeparation) | 446 if (m_protocol == "file" && m_enforceFilePathSeparation) |
| 417 return "null"; | 447 return "null"; |
| 418 return toRawString(); | 448 return toRawString(); |
| 419 } | 449 } |
| 420 | 450 |
| 421 AtomicString SecurityOrigin::toAtomicString() const | 451 AtomicString SecurityOrigin::toAtomicString() const |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 491 } | 521 } |
| 492 | 522 |
| 493 const String& SecurityOrigin::urlWithUniqueSecurityOrigin() | 523 const String& SecurityOrigin::urlWithUniqueSecurityOrigin() |
| 494 { | 524 { |
| 495 ASSERT(isMainThread()); | 525 ASSERT(isMainThread()); |
| 496 DEFINE_STATIC_LOCAL(const String, uniqueSecurityOriginURL, ("data:,")); | 526 DEFINE_STATIC_LOCAL(const String, uniqueSecurityOriginURL, ("data:,")); |
| 497 return uniqueSecurityOriginURL; | 527 return uniqueSecurityOriginURL; |
| 498 } | 528 } |
| 499 | 529 |
| 500 } // namespace WebCore | 530 } // namespace WebCore |
| OLD | NEW |