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