18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this software without specific prior written permission. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef SecurityOrigin_h 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define SecurityOrigin_h 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FrameLoaderTypes.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "PlatformString.h" 342bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/ThreadSafeRefCounted.h> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 38d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass Document; 39d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass KURL; 40d0825bca7fe65beaee391d30da42e937db621564Steve Block 412bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass SecurityOrigin : public ThreadSafeRefCounted<SecurityOrigin> { 42d0825bca7fe65beaee391d30da42e937db621564Steve Blockpublic: 43d0825bca7fe65beaee391d30da42e937db621564Steve Block static PassRefPtr<SecurityOrigin> createFromDatabaseIdentifier(const String&); 44d0825bca7fe65beaee391d30da42e937db621564Steve Block static PassRefPtr<SecurityOrigin> createFromString(const String&); 45cad810f21b803229eb11403f9209855525a25d57Steve Block static PassRefPtr<SecurityOrigin> create(const String& protocol, const String& host, int port); 46d0825bca7fe65beaee391d30da42e937db621564Steve Block static PassRefPtr<SecurityOrigin> create(const KURL&, SandboxFlags = SandboxNone); 47d0825bca7fe65beaee391d30da42e937db621564Steve Block static PassRefPtr<SecurityOrigin> createEmpty(); 48d0825bca7fe65beaee391d30da42e937db621564Steve Block 49d0825bca7fe65beaee391d30da42e937db621564Steve Block // Create a deep copy of this SecurityOrigin. This method is useful 50d0825bca7fe65beaee391d30da42e937db621564Steve Block // when marshalling a SecurityOrigin to another thread. 51d0825bca7fe65beaee391d30da42e937db621564Steve Block PassRefPtr<SecurityOrigin> threadsafeCopy(); 52d0825bca7fe65beaee391d30da42e937db621564Steve Block 53d0825bca7fe65beaee391d30da42e937db621564Steve Block // Set the domain property of this security origin to newDomain. This 54d0825bca7fe65beaee391d30da42e937db621564Steve Block // function does not check whether newDomain is a suffix of the current 55d0825bca7fe65beaee391d30da42e937db621564Steve Block // domain. The caller is responsible for validating newDomain. 56d0825bca7fe65beaee391d30da42e937db621564Steve Block void setDomainFromDOM(const String& newDomain); 57d0825bca7fe65beaee391d30da42e937db621564Steve Block bool domainWasSetInDOM() const { return m_domainWasSetInDOM; } 58d0825bca7fe65beaee391d30da42e937db621564Steve Block 59d0825bca7fe65beaee391d30da42e937db621564Steve Block static void setDomainRelaxationForbiddenForURLScheme(bool forbidden, const String&); 60d0825bca7fe65beaee391d30da42e937db621564Steve Block static bool isDomainRelaxationForbiddenForURLScheme(const String&); 61d0825bca7fe65beaee391d30da42e937db621564Steve Block 62d0825bca7fe65beaee391d30da42e937db621564Steve Block String protocol() const { return m_protocol; } 63d0825bca7fe65beaee391d30da42e937db621564Steve Block String host() const { return m_host; } 64d0825bca7fe65beaee391d30da42e937db621564Steve Block String domain() const { return m_domain; } 65d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned short port() const { return m_port; } 66d0825bca7fe65beaee391d30da42e937db621564Steve Block 67d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns true if this SecurityOrigin can script objects in the given 68d0825bca7fe65beaee391d30da42e937db621564Steve Block // SecurityOrigin. For example, call this function before allowing 69d0825bca7fe65beaee391d30da42e937db621564Steve Block // script from one security origin to read or write objects from 70d0825bca7fe65beaee391d30da42e937db621564Steve Block // another SecurityOrigin. 71d0825bca7fe65beaee391d30da42e937db621564Steve Block bool canAccess(const SecurityOrigin*) const; 72d0825bca7fe65beaee391d30da42e937db621564Steve Block 73d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns true if this SecurityOrigin can read content retrieved from 74d0825bca7fe65beaee391d30da42e937db621564Steve Block // the given URL. For example, call this function before issuing 75d0825bca7fe65beaee391d30da42e937db621564Steve Block // XMLHttpRequests. 76d0825bca7fe65beaee391d30da42e937db621564Steve Block bool canRequest(const KURL&) const; 77d0825bca7fe65beaee391d30da42e937db621564Steve Block 78d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns true if drawing an image from this URL taints a canvas from 79d0825bca7fe65beaee391d30da42e937db621564Steve Block // this security origin. For example, call this function before 80d0825bca7fe65beaee391d30da42e937db621564Steve Block // drawing an image onto an HTML canvas element with the drawImage API. 81d0825bca7fe65beaee391d30da42e937db621564Steve Block bool taintsCanvas(const KURL&) const; 82d0825bca7fe65beaee391d30da42e937db621564Steve Block 836b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner // Returns true if this SecurityOrigin can receive drag content from the 846b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner // initiator. For example, call this function before allowing content to be 856b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner // dropped onto a target. 866b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner bool canReceiveDragData(const SecurityOrigin* dragInitiator) const; 876b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 885abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick // Returns true if |document| can display content from the given URL (e.g., 895abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick // in an iframe or as an image). For example, web sites generally cannot 9068513a70bcd92384395513322f1b801e7bf9c729Steve Block // display content from the user's files system. 9168513a70bcd92384395513322f1b801e7bf9c729Steve Block bool canDisplay(const KURL&) const; 9268513a70bcd92384395513322f1b801e7bf9c729Steve Block 93d0825bca7fe65beaee391d30da42e937db621564Steve Block // Returns true if this SecurityOrigin can load local resources, such 94d0825bca7fe65beaee391d30da42e937db621564Steve Block // as images, iframes, and style sheets, and can link to local URLs. 95d0825bca7fe65beaee391d30da42e937db621564Steve Block // For example, call this function before creating an iframe to a 96d0825bca7fe65beaee391d30da42e937db621564Steve Block // file:// URL. 97d0825bca7fe65beaee391d30da42e937db621564Steve Block // 98d0825bca7fe65beaee391d30da42e937db621564Steve Block // Note: A SecurityOrigin might be allowed to load local resources 99d0825bca7fe65beaee391d30da42e937db621564Steve Block // without being able to issue an XMLHttpRequest for a local URL. 100d0825bca7fe65beaee391d30da42e937db621564Steve Block // To determine whether the SecurityOrigin can issue an 101d0825bca7fe65beaee391d30da42e937db621564Steve Block // XMLHttpRequest for a URL, call canRequest(url). 102d0825bca7fe65beaee391d30da42e937db621564Steve Block bool canLoadLocalResources() const { return m_canLoadLocalResources; } 103d0825bca7fe65beaee391d30da42e937db621564Steve Block 104d0825bca7fe65beaee391d30da42e937db621564Steve Block // Explicitly grant the ability to load local resources to this 105d0825bca7fe65beaee391d30da42e937db621564Steve Block // SecurityOrigin. 106d0825bca7fe65beaee391d30da42e937db621564Steve Block // 107d0825bca7fe65beaee391d30da42e937db621564Steve Block // Note: This method exists only to support backwards compatibility 108d0825bca7fe65beaee391d30da42e937db621564Steve Block // with older versions of WebKit. 109d0825bca7fe65beaee391d30da42e937db621564Steve Block void grantLoadLocalResources(); 110d0825bca7fe65beaee391d30da42e937db621564Steve Block 111d0825bca7fe65beaee391d30da42e937db621564Steve Block // Explicitly grant the ability to access very other SecurityOrigin. 112d0825bca7fe65beaee391d30da42e937db621564Steve Block // 113d0825bca7fe65beaee391d30da42e937db621564Steve Block // WARNING: This is an extremely powerful ability. Use with caution! 114d0825bca7fe65beaee391d30da42e937db621564Steve Block void grantUniversalAccess(); 115d0825bca7fe65beaee391d30da42e937db621564Steve Block 116d0825bca7fe65beaee391d30da42e937db621564Steve Block bool isSandboxed(SandboxFlags mask) const { return m_sandboxFlags & mask; } 117d0825bca7fe65beaee391d30da42e937db621564Steve Block 118d0825bca7fe65beaee391d30da42e937db621564Steve Block bool canAccessDatabase() const { return !isUnique(); } 119dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool canAccessLocalStorage() const { return !isUnique(); } 120d0825bca7fe65beaee391d30da42e937db621564Steve Block bool canAccessCookies() const { return !isUnique(); } 121e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block bool canAccessPasswordManager() const { return !isUnique(); } 122bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen bool canAccessFileSystem() const { return !isUnique(); } 123d0825bca7fe65beaee391d30da42e937db621564Steve Block 12421939df44de1705786c545cd1bf519d47250322dBen Murdoch // Technically, we should always allow access to sessionStorage, but we 12521939df44de1705786c545cd1bf519d47250322dBen Murdoch // currently don't handle creating a sessionStorage area for unique 12621939df44de1705786c545cd1bf519d47250322dBen Murdoch // origins. 12721939df44de1705786c545cd1bf519d47250322dBen Murdoch bool canAccessSessionStorage() const { return !isUnique(); } 12821939df44de1705786c545cd1bf519d47250322dBen Murdoch 129d0825bca7fe65beaee391d30da42e937db621564Steve Block bool isSecureTransitionTo(const KURL&) const; 130d0825bca7fe65beaee391d30da42e937db621564Steve Block 131d0825bca7fe65beaee391d30da42e937db621564Steve Block // The local SecurityOrigin is the most privileged SecurityOrigin. 132d0825bca7fe65beaee391d30da42e937db621564Steve Block // The local SecurityOrigin can script any document, navigate to local 133d0825bca7fe65beaee391d30da42e937db621564Steve Block // resources, and can set arbitrary headers on XMLHttpRequests. 134d0825bca7fe65beaee391d30da42e937db621564Steve Block bool isLocal() const; 135d0825bca7fe65beaee391d30da42e937db621564Steve Block 136d0825bca7fe65beaee391d30da42e937db621564Steve Block // The origin is a globally unique identifier assigned when the Document is 137d0825bca7fe65beaee391d30da42e937db621564Steve Block // created. http://www.whatwg.org/specs/web-apps/current-work/#sandboxOrigin 138d0825bca7fe65beaee391d30da42e937db621564Steve Block // 139d0825bca7fe65beaee391d30da42e937db621564Steve Block // There's a subtle difference between a unique origin and an origin that 140d0825bca7fe65beaee391d30da42e937db621564Steve Block // has the SandboxOrigin flag set. The latter implies the former, and, in 141d0825bca7fe65beaee391d30da42e937db621564Steve Block // addition, the SandboxOrigin flag is inherited by iframes. 142d0825bca7fe65beaee391d30da42e937db621564Steve Block bool isUnique() const { return m_isUnique; } 143d0825bca7fe65beaee391d30da42e937db621564Steve Block 1442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // The empty SecurityOrigin is a unique security orign (in the sense of 1452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // isUnique above) that was created for a "blank" document, such about 1462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // about:blank. Empty origins differ from unique origins in that they can 1472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // sometimes be replaced by non-empty origins, for example when an 1482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // about:blank iframe inherits its security origin from its parent frame. 1492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch bool isEmpty() const; 1502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 151dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Marks a file:// origin as being in a domain defined by its path. 152dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block void enforceFilePathSeparation(); 153692e5dbf12901edacf14812a6fae25462920af42Steve Block 154d0825bca7fe65beaee391d30da42e937db621564Steve Block // Convert this SecurityOrigin into a string. The string 155d0825bca7fe65beaee391d30da42e937db621564Steve Block // representation of a SecurityOrigin is similar to a URL, except it 156d0825bca7fe65beaee391d30da42e937db621564Steve Block // lacks a path component. The string representation does not encode 157d0825bca7fe65beaee391d30da42e937db621564Steve Block // the value of the SecurityOrigin's domain property. 158d0825bca7fe65beaee391d30da42e937db621564Steve Block // 159d0825bca7fe65beaee391d30da42e937db621564Steve Block // When using the string value, it's important to remember that it might be 160d0825bca7fe65beaee391d30da42e937db621564Steve Block // "null". This happens when this SecurityOrigin is unique. For example, 161d0825bca7fe65beaee391d30da42e937db621564Steve Block // this SecurityOrigin might have come from a sandboxed iframe, the 162d0825bca7fe65beaee391d30da42e937db621564Steve Block // SecurityOrigin might be empty, or we might have explicitly decided that 163d0825bca7fe65beaee391d30da42e937db621564Steve Block // we shouldTreatURLSchemeAsNoAccess. 164d0825bca7fe65beaee391d30da42e937db621564Steve Block String toString() const; 165d0825bca7fe65beaee391d30da42e937db621564Steve Block 166d0825bca7fe65beaee391d30da42e937db621564Steve Block // Serialize the security origin to a string that could be used as part of 167d0825bca7fe65beaee391d30da42e937db621564Steve Block // file names. This format should be used in storage APIs only. 168d0825bca7fe65beaee391d30da42e937db621564Steve Block String databaseIdentifier() const; 169d0825bca7fe65beaee391d30da42e937db621564Steve Block 170d0825bca7fe65beaee391d30da42e937db621564Steve Block // This method checks for equality between SecurityOrigins, not whether 171d0825bca7fe65beaee391d30da42e937db621564Steve Block // one origin can access another. It is used for hash table keys. 172d0825bca7fe65beaee391d30da42e937db621564Steve Block // For access checks, use canAccess(). 173d0825bca7fe65beaee391d30da42e937db621564Steve Block // FIXME: If this method is really only useful for hash table keys, it 174d0825bca7fe65beaee391d30da42e937db621564Steve Block // should be refactored into SecurityOriginHash. 175d0825bca7fe65beaee391d30da42e937db621564Steve Block bool equal(const SecurityOrigin*) const; 176d0825bca7fe65beaee391d30da42e937db621564Steve Block 177d0825bca7fe65beaee391d30da42e937db621564Steve Block // This method checks for equality, ignoring the value of document.domain 178d0825bca7fe65beaee391d30da42e937db621564Steve Block // (and whether it was set) but considering the host. It is used for postMessage. 179d0825bca7fe65beaee391d30da42e937db621564Steve Block bool isSameSchemeHostPort(const SecurityOrigin*) const; 180d0825bca7fe65beaee391d30da42e937db621564Steve Block 181d0825bca7fe65beaee391d30da42e937db621564Steve Block static bool shouldHideReferrer(const KURL&, const String& referrer); 182d0825bca7fe65beaee391d30da42e937db621564Steve Block 183d0825bca7fe65beaee391d30da42e937db621564Steve Block enum LocalLoadPolicy { 184d0825bca7fe65beaee391d30da42e937db621564Steve Block AllowLocalLoadsForAll, // No restriction on local loads. 185d0825bca7fe65beaee391d30da42e937db621564Steve Block AllowLocalLoadsForLocalAndSubstituteData, 186d0825bca7fe65beaee391d30da42e937db621564Steve Block AllowLocalLoadsForLocalOnly, 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 188d0825bca7fe65beaee391d30da42e937db621564Steve Block static void setLocalLoadPolicy(LocalLoadPolicy); 189d0825bca7fe65beaee391d30da42e937db621564Steve Block static bool restrictAccessToLocal(); 190d0825bca7fe65beaee391d30da42e937db621564Steve Block static bool allowSubstituteDataAccessToLocal(); 191d0825bca7fe65beaee391d30da42e937db621564Steve Block 192dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static void addOriginAccessWhitelistEntry(const SecurityOrigin& sourceOrigin, const String& destinationProtocol, const String& destinationDomains, bool allowDestinationSubdomains); 193dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static void removeOriginAccessWhitelistEntry(const SecurityOrigin& sourceOrigin, const String& destinationProtocol, const String& destinationDomains, bool allowDestinationSubdomains); 194dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static void resetOriginAccessWhitelists(); 195d0825bca7fe65beaee391d30da42e937db621564Steve Block 196d0825bca7fe65beaee391d30da42e937db621564Steve Blockprivate: 197d0825bca7fe65beaee391d30da42e937db621564Steve Block SecurityOrigin(const KURL&, SandboxFlags); 198d0825bca7fe65beaee391d30da42e937db621564Steve Block explicit SecurityOrigin(const SecurityOrigin*); 199d0825bca7fe65beaee391d30da42e937db621564Steve Block 20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // FIXME: Rename this function to something more semantic. 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool passesFileCheck(const SecurityOrigin*) const; 202dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool isAccessWhiteListed(const SecurityOrigin*) const; 20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch bool isAccessToURLWhiteListed(const KURL&) const; 205dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 206d0825bca7fe65beaee391d30da42e937db621564Steve Block SandboxFlags m_sandboxFlags; 207d0825bca7fe65beaee391d30da42e937db621564Steve Block String m_protocol; 208d0825bca7fe65beaee391d30da42e937db621564Steve Block String m_host; 209dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block mutable String m_encodedHost; 210d0825bca7fe65beaee391d30da42e937db621564Steve Block String m_domain; 211dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block String m_filePath; 212d0825bca7fe65beaee391d30da42e937db621564Steve Block unsigned short m_port; 213d0825bca7fe65beaee391d30da42e937db621564Steve Block bool m_isUnique; 214d0825bca7fe65beaee391d30da42e937db621564Steve Block bool m_universalAccess; 215d0825bca7fe65beaee391d30da42e937db621564Steve Block bool m_domainWasSetInDOM; 216d0825bca7fe65beaee391d30da42e937db621564Steve Block bool m_canLoadLocalResources; 217dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool m_enforceFilePathSeparation; 218d0825bca7fe65beaee391d30da42e937db621564Steve Block}; 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // SecurityOrigin_h 223