Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: Source/WebCore/page/SecurityOrigin.cpp

Issue 8856006: WebKit changes needed for supporting filesystem URLs natively in GURL/KURL. (Closed) Base URL: http://svn.webkit.org/repository/webkit/trunk
Patch Set: Merged out latest webkit. Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 return false; 77 return false;
78 } 78 }
79 79
80 // In general, extracting the inner URL varies by scheme. It just so happens 80 // In general, extracting the inner URL varies by scheme. It just so happens
81 // that all the URL schemes we currently support that use inner URLs for their 81 // that all the URL schemes we currently support that use inner URLs for their
82 // security origin can be parsed using this algorithm. 82 // security origin can be parsed using this algorithm.
83 static KURL extractInnerURL(const KURL& url) 83 static KURL extractInnerURL(const KURL& url)
84 { 84 {
85 // FIXME: Update this callsite to use the innerURL member function when 85 // FIXME: Update this callsite to use the innerURL member function when
86 // we finish implementing it. 86 // we finish implementing it.
87 #if ENABLE(FILE_SYSTEM)
88 if (url.inner_url())
89 return *url.inner_url();
90 #endif
87 return KURL(ParsedURLString, decodeURLEscapeSequences(url.path())); 91 return KURL(ParsedURLString, decodeURLEscapeSequences(url.path()));
abarth-chromium 2011/12/20 07:03:15 This shouldn't be conditional on ENABLE(FILE_SYSTE
ericu 2011/12/20 23:55:34 Currently innerURL only exists if ENABLE(FILE_SYST
88 } 92 }
89 93
90 static bool shouldTreatAsUniqueOrigin(const KURL& url) 94 static bool shouldTreatAsUniqueOrigin(const KURL& url)
91 { 95 {
92 if (!url.isValid()) 96 if (!url.isValid())
93 return true; 97 return true;
94 98
95 // FIXME: Do we need to unwrap the URL further? 99 // FIXME: Do we need to unwrap the URL further?
96 KURL innerURL = shouldUseInnerURL(url) ? extractInnerURL(url) : url; 100 KURL innerURL = shouldUseInnerURL(url) ? extractInnerURL(url) : url;
97 101
(...skipping 19 matching lines...) Expand all
117 SecurityOrigin::SecurityOrigin(const KURL& url) 121 SecurityOrigin::SecurityOrigin(const KURL& url)
118 : m_protocol(url.protocol().isNull() ? "" : url.protocol().lower()) 122 : m_protocol(url.protocol().isNull() ? "" : url.protocol().lower())
119 , m_host(url.host().isNull() ? "" : url.host().lower()) 123 , m_host(url.host().isNull() ? "" : url.host().lower())
120 , m_port(url.port()) 124 , m_port(url.port())
121 , m_isUnique(false) 125 , m_isUnique(false)
122 , m_universalAccess(false) 126 , m_universalAccess(false)
123 , m_domainWasSetInDOM(false) 127 , m_domainWasSetInDOM(false)
124 , m_enforceFilePathSeparation(false) 128 , m_enforceFilePathSeparation(false)
125 , m_needsDatabaseIdentifierQuirkForFiles(false) 129 , m_needsDatabaseIdentifierQuirkForFiles(false)
126 { 130 {
131 // These protocols do not create security origins; the owner frame provides the origin
132 if (m_protocol == "about" || m_protocol == "javascript")
133 m_protocol = "";
134
135 #if ENABLE(BLOB)
136 if (m_protocol == BlobURL::blobProtocol()) {
137 KURL originURL(ParsedURLString, decodeURLEscapeSequences(url.path()));
138 if (originURL.isValid()) {
139 m_protocol = originURL.protocol().lower();
140 m_host = originURL.host().lower();
141 m_port = originURL.port();
142 } else
143 m_isUnique = true;
144 }
145 #endif
146
147 #if ENABLE(FILE_SYSTEM)
148 if (m_protocol == "filesystem") {
149 if (url.inner_url() && url.inner_url()->isValid()) {
150 m_protocol = url.inner_url()->protocol().lower();
151 m_host = url.inner_url()->host().lower();
152 m_port = url.inner_url()->port();
153 } else
154 m_isUnique = true;
155 }
156 #endif
157
abarth-chromium 2011/12/20 07:03:15 None of this code should be here anymore. It all
ericu 2011/12/20 23:55:34 I took out the non-FILE_SYSTEM code, but left my s
127 // document.domain starts as m_host, but can be set by the DOM. 158 // document.domain starts as m_host, but can be set by the DOM.
128 m_domain = m_host; 159 m_domain = m_host;
129 160
130 if (isDefaultPortForProtocol(m_port, m_protocol)) 161 if (isDefaultPortForProtocol(m_port, m_protocol))
131 m_port = InvalidPort; 162 m_port = InvalidPort;
132 163
133 // By default, only local SecurityOrigins can load local resources. 164 // By default, only local SecurityOrigins can load local resources.
134 m_canLoadLocalResources = isLocal(); 165 m_canLoadLocalResources = isLocal();
135 166
136 if (m_canLoadLocalResources) 167 if (m_canLoadLocalResources)
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 if (m_port != other->m_port) 532 if (m_port != other->m_port)
502 return false; 533 return false;
503 534
504 if (isLocal() && !passesFileCheck(other)) 535 if (isLocal() && !passesFileCheck(other))
505 return false; 536 return false;
506 537
507 return true; 538 return true;
508 } 539 }
509 540
510 } // namespace WebCore 541 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698