2010-11-30 Ojan Vafai <ojan@chromium.org>
authorojan@chromium.org <ojan@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Dec 2010 03:12:25 +0000 (03:12 +0000)
committerojan@chromium.org <ojan@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 1 Dec 2010 03:12:25 +0000 (03:12 +0000)
        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
        https://bugs.webkit.org/show_bug.cgi?id=50288

        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182
        A display-isolated URL can only be displayed (e.g., put in an iframe,
        hyperlinked to) by documents from that scheme. In a sense, this is a
        generalization of some of the protections we give file URLs, but
        instead of lumping them all together into one "local" bucket, this
        patch creates a separate bucket for each scheme.
        For a while, I tried using a separate bucket for each origin. That
        would have played nicely with what Blob URLs are trying to do, but some
        "chrome" URL pages rely on being able to display other chrome URL
        pages, even in different origins. For example, the New Tab Page shows
        thumbnails from the "thumbnail" host.
        This patch also removes a bunch of unused code. I've also propagated
        the "deprecated" status of deprecatedCanDisplay to
        deprecatedShouldTreatURLAsLocal because that method has no other
        callers and is really asking for uppercase/lowercase bugs. I dream of
        someday removing these functions.
        page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::canDisplay):
        (WebCore::SecurityOrigin::deprecatedCanDisplay):
        platform/SchemeRegistry.cpp:
        (WebCore::displayIsolatedURLSchemes):
        (WebCore::SchemeRegistry::registerURLSchemeAsLocal):
        (WebCore::SchemeRegistry::deprecatedShouldTreatURLAsLocal):
        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal):
        (WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated):
        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated):
        platform/SchemeRegistry.h:
        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
         https://bugs.webkit.org/show_bug.cgi?id=50182
        This patch adds a Chromium API for registering schemes as
        display-isolated. In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local. That will
        prevent file URLs from linking to chrome URLs.
        public/WebSecurityPolicy.h:
        src/WebSecurityPolicy.cpp:
        (WebKit::WebSecurityPolicy::registerURLSchemeAsDisplayIsolated):

        * page/SecurityOrigin.cpp:
        (WebCore::SecurityOrigin::canDisplay):
        (WebCore::SecurityOrigin::deprecatedCanDisplay):
        * platform/SchemeRegistry.cpp:
        (WebCore::SchemeRegistry::registerURLSchemeAsLocal):
        (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal):
        (WebCore::SchemeRegistry::localURLSchemes):
        (WebCore::SchemeRegistry::shouldTreatURLAsLocal):
        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal):
        * platform/SchemeRegistry.h:
2010-11-30  Ojan Vafai  <ojan@chromium.org>

        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
        https://bugs.webkit.org/show_bug.cgi?id=50288

        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182
        A display-isolated URL can only be displayed (e.g., put in an iframe,
        hyperlinked to) by documents from that scheme. In a sense, this is a
        generalization of some of the protections we give file URLs, but
        instead of lumping them all together into one "local" bucket, this
        patch creates a separate bucket for each scheme.
        For a while, I tried using a separate bucket for each origin. That
        would have played nicely with what Blob URLs are trying to do, but some
        "chrome" URL pages rely on being able to display other chrome URL
        pages, even in different origins. For example, the New Tab Page shows
        thumbnails from the "thumbnail" host.
        This patch also removes a bunch of unused code. I've also propagated
        the "deprecated" status of deprecatedCanDisplay to
        deprecatedShouldTreatURLAsLocal because that method has no other
        callers and is really asking for uppercase/lowercase bugs. I dream of
        someday removing these functions.
        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
         https://bugs.webkit.org/show_bug.cgi?id=50182
        This patch adds a Chromium API for registering schemes as
        display-isolated. In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local. That will
        prevent file URLs from linking to chrome URLs.

        * public/WebSecurityPolicy.h:
        * src/WebSecurityPolicy.cpp:
2010-11-30  Ojan Vafai  <ojan@chromium.org>

        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
        https://bugs.webkit.org/show_bug.cgi?id=50288

        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
        https://bugs.webkit.org/show_bug.cgi?id=50182
        A display-isolated URL can only be displayed (e.g., put in an iframe,
        hyperlinked to) by documents from that scheme. In a sense, this is a
        generalization of some of the protections we give file URLs, but
        instead of lumping them all together into one "local" bucket, this
        patch creates a separate bucket for each scheme.
        For a while, I tried using a separate bucket for each origin. That
        would have played nicely with what Blob URLs are trying to do, but some
        "chrome" URL pages rely on being able to display other chrome URL
        pages, even in different origins. For example, the New Tab Page shows
        thumbnails from the "thumbnail" host.
        This patch also removes a bunch of unused code. I've also propagated
        the "deprecated" status of deprecatedCanDisplay to
        deprecatedShouldTreatURLAsLocal because that method has no other
        callers and is really asking for uppercase/lowercase bugs. I dream of
        someday removing these functions.
        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
        Reviewed by Darin Adler.
        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
         https://bugs.webkit.org/show_bug.cgi?id=50182
        This patch adds a Chromium API for registering schemes as
        display-isolated. In a subsequent patch, I'll change the "chrome"
        scheme in Chrome to be display isolated instead of local. That will
        prevent file URLs from linking to chrome URLs.

        * Api/qwebsecurityorigin.cpp:
        (QWebSecurityOrigin::localSchemes):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@73002 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/page/SecurityOrigin.cpp
WebCore/platform/SchemeRegistry.cpp
WebCore/platform/SchemeRegistry.h
WebKit/chromium/ChangeLog
WebKit/chromium/public/WebSecurityPolicy.h
WebKit/chromium/src/WebSecurityPolicy.cpp
WebKit/qt/Api/qwebsecurityorigin.cpp
WebKit/qt/ChangeLog

index 67e856e8f3b77746c639b77e263762f1d7eccdca..c234c90b709a4547a278507a1cc64c091f76a361 100644 (file)
@@ -1,3 +1,61 @@
+2010-11-30  Ojan Vafai  <ojan@chromium.org>
+
+        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
+        https://bugs.webkit.org/show_bug.cgi?id=50288
+
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+        https://bugs.webkit.org/show_bug.cgi?id=50182
+        A display-isolated URL can only be displayed (e.g., put in an iframe,
+        hyperlinked to) by documents from that scheme. In a sense, this is a
+        generalization of some of the protections we give file URLs, but
+        instead of lumping them all together into one "local" bucket, this
+        patch creates a separate bucket for each scheme.
+        For a while, I tried using a separate bucket for each origin. That
+        would have played nicely with what Blob URLs are trying to do, but some
+        "chrome" URL pages rely on being able to display other chrome URL
+        pages, even in different origins. For example, the New Tab Page shows
+        thumbnails from the "thumbnail" host.
+        This patch also removes a bunch of unused code. I've also propagated
+        the "deprecated" status of deprecatedCanDisplay to
+        deprecatedShouldTreatURLAsLocal because that method has no other
+        callers and is really asking for uppercase/lowercase bugs. I dream of
+        someday removing these functions.
+        page/SecurityOrigin.cpp:
+        (WebCore::SecurityOrigin::canDisplay):
+        (WebCore::SecurityOrigin::deprecatedCanDisplay):
+        platform/SchemeRegistry.cpp:
+        (WebCore::displayIsolatedURLSchemes):
+        (WebCore::SchemeRegistry::registerURLSchemeAsLocal):
+        (WebCore::SchemeRegistry::deprecatedShouldTreatURLAsLocal):
+        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal):
+        (WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated):
+        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated):
+        platform/SchemeRegistry.h:
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+         https://bugs.webkit.org/show_bug.cgi?id=50182
+        This patch adds a Chromium API for registering schemes as
+        display-isolated. In a subsequent patch, I'll change the "chrome"
+        scheme in Chrome to be display isolated instead of local. That will
+        prevent file URLs from linking to chrome URLs.
+        public/WebSecurityPolicy.h:
+        src/WebSecurityPolicy.cpp:
+        (WebKit::WebSecurityPolicy::registerURLSchemeAsDisplayIsolated):
+
+        * page/SecurityOrigin.cpp:
+        (WebCore::SecurityOrigin::canDisplay):
+        (WebCore::SecurityOrigin::deprecatedCanDisplay):
+        * platform/SchemeRegistry.cpp:
+        (WebCore::SchemeRegistry::registerURLSchemeAsLocal):
+        (WebCore::SchemeRegistry::removeURLSchemeRegisteredAsLocal):
+        (WebCore::SchemeRegistry::localURLSchemes):
+        (WebCore::SchemeRegistry::shouldTreatURLAsLocal):
+        (WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal):
+        * platform/SchemeRegistry.h:
+
 2010-11-30  Chris Fleizach  <cfleizach@apple.com>
 
         Reviewed by Beth Dakin.
index 3b8d148b7d7e56e72ae5b6d749e216eadfdf4c20..82af42a637781e91dafa6858c970e9dfc5bf61b4 100644 (file)
@@ -298,26 +298,22 @@ bool SecurityOrigin::isAccessWhiteListed(const SecurityOrigin* targetOrigin) con
     }
     return false;
 }
-
+  
 bool SecurityOrigin::canDisplay(const KURL& url) const
 {
-    RefPtr<SecurityOrigin> targetOrigin = SecurityOrigin::create(url);
-    if (isAccessWhiteListed(targetOrigin.get()))
-        return true;
-
-    if (SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated(targetOrigin->protocol()))
-        return targetOrigin->protocol() == m_protocol;
-
 #if ENABLE(BLOB)
-    // FIXME: We should generalize this check.
-    if (targetOrigin->protocol() == BlobURL::blobProtocol())
+    if (url.protocolIs(BlobURL::blobProtocol()))
         return canRequest(url);
 #endif
 
     if (!restrictAccessToLocal())
         return true;
 
-    if (!SchemeRegistry::shouldTreatURLSchemeAsLocal(targetOrigin->protocol()))
+    if (!SchemeRegistry::shouldTreatURLAsLocal(url.string()))
+        return true;
+
+    RefPtr<SecurityOrigin> targetOrigin = SecurityOrigin::create(url);
+    if (isAccessWhiteListed(targetOrigin.get()))
         return true;
 
     return canLoadLocalResources();
@@ -328,12 +324,10 @@ bool SecurityOrigin::deprecatedCanDisplay(const String& referrer, const KURL& ur
     if (!restrictAccessToLocal())
         return true;
 
-    // FIXME: I suspect these checks are incorrect because referrer and url
-    //        have not necessarily been canonicalized.
-    if (!SchemeRegistry::deprecatedShouldTreatURLAsLocal(url.string()))
+    if (!SchemeRegistry::shouldTreatURLAsLocal(url.string()))
         return true;
 
-    return SchemeRegistry::deprecatedShouldTreatURLAsLocal(referrer);
+    return SchemeRegistry::shouldTreatURLAsLocal(referrer);
 }
 
 void SecurityOrigin::grantLoadLocalResources()
index 617acd3d3745976b26edd9e3231a4a03c9a17238..58df51a570878144766828cef2a3fdc0219022e9 100644 (file)
@@ -45,12 +45,6 @@ static URLSchemesMap& localURLSchemes()
     return localSchemes;
 }
 
-static URLSchemesMap& displayIsolatedURLSchemes()
-{
-    DEFINE_STATIC_LOCAL(URLSchemesMap, displayIsolatedSchemes, ());
-    return displayIsolatedSchemes;
-}
-
 static URLSchemesMap& secureSchemes()
 {
     DEFINE_STATIC_LOCAL(URLSchemesMap, secureSchemes, ());
@@ -88,7 +82,7 @@ static URLSchemesMap& emptyDocumentSchemes()
 
 void SchemeRegistry::registerURLSchemeAsLocal(const String& scheme)
 {
-    localURLSchemes().add(scheme);
+    WebCore::localURLSchemes().add(scheme);
 }
 
 void SchemeRegistry::removeURLSchemeRegisteredAsLocal(const String& scheme)
@@ -99,15 +93,15 @@ void SchemeRegistry::removeURLSchemeRegisteredAsLocal(const String& scheme)
     if (scheme == "applewebdata")
         return;
 #endif
-    localURLSchemes().remove(scheme);
+    WebCore::localURLSchemes().remove(scheme);
 }
 
-const URLSchemesMap& SchemeRegistry::localSchemes()
+const URLSchemesMap& SchemeRegistry::localURLSchemes()
 {
-    return localURLSchemes();
+    return WebCore::localURLSchemes();
 }
 
-bool SchemeRegistry::deprecatedShouldTreatURLAsLocal(const String& url)
+bool SchemeRegistry::shouldTreatURLAsLocal(const String& url)
 {
     // This avoids an allocation of another String and the HashSet contains()
     // call for the file: and http: schemes.
@@ -124,7 +118,7 @@ bool SchemeRegistry::deprecatedShouldTreatURLAsLocal(const String& url)
         return false;
 
     String scheme = url.left(loc);
-    return localURLSchemes().contains(scheme);
+    return WebCore::localURLSchemes().contains(scheme);
 }
 
 bool SchemeRegistry::shouldTreatURLSchemeAsLocal(const String& scheme)
@@ -142,7 +136,7 @@ bool SchemeRegistry::shouldTreatURLSchemeAsLocal(const String& scheme)
     if (scheme.isEmpty())
         return false;
 
-    return localURLSchemes().contains(scheme);
+    return WebCore::localURLSchemes().contains(scheme);
 }
 
 void SchemeRegistry::registerURLSchemeAsNoAccess(const String& scheme)
@@ -155,16 +149,6 @@ bool SchemeRegistry::shouldTreatURLSchemeAsNoAccess(const String& scheme)
     return schemesWithUniqueOrigins().contains(scheme);
 }
 
-void SchemeRegistry::registerURLSchemeAsDisplayIsolated(const String& scheme)
-{
-    displayIsolatedURLSchemes().add(scheme);
-}
-
-bool SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated(const String& scheme)
-{
-    return displayIsolatedURLSchemes().contains(scheme);
-}
-
 void SchemeRegistry::registerURLSchemeAsSecure(const String& scheme)
 {
     secureSchemes().add(scheme);
index 9d79b3fedc3fcdfe38d3716d50d46c837a11ff78..56e3b33bdc01c4e38f31accf860d76eaa09e51bc 100644 (file)
@@ -38,10 +38,10 @@ class SchemeRegistry {
 public:
     static void registerURLSchemeAsLocal(const String&);
     static void removeURLSchemeRegisteredAsLocal(const String&);
-    static const URLSchemesMap& localSchemes();
+    static const URLSchemesMap& localURLSchemes();
 
+    static bool shouldTreatURLAsLocal(const String&);
     static bool shouldTreatURLSchemeAsLocal(const String&);
-    static bool deprecatedShouldTreatURLAsLocal(const String&);
 
     // Secure schemes do not trigger mixed content warnings. For example,
     // https and data are secure schemes because they cannot be corrupted by
@@ -51,12 +51,7 @@ public:
 
     static void registerURLSchemeAsNoAccess(const String&);
     static bool shouldTreatURLSchemeAsNoAccess(const String&);
-
-    // Display-isolated schemes can only be displayed (in the sense of
-    // SecurityOrigin::canDisplay) by documents from the same scheme.
-    static void registerURLSchemeAsDisplayIsolated(const String&);
-    static bool shouldTreatURLSchemeAsDisplayIsolated(const String&);
-
+    
     static void registerURLSchemeAsEmptyDocument(const String&);
     static bool shouldLoadURLSchemeAsEmptyDocument(const String&);
 };
index cc5ab9288021697b40d8a66eca607f2eaa52fc80..9fd2814e12d0cc4815a3088e957856be50acb4fa 100644 (file)
@@ -1,3 +1,39 @@
+2010-11-30  Ojan Vafai  <ojan@chromium.org>
+
+        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
+        https://bugs.webkit.org/show_bug.cgi?id=50288
+
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+        https://bugs.webkit.org/show_bug.cgi?id=50182
+        A display-isolated URL can only be displayed (e.g., put in an iframe,
+        hyperlinked to) by documents from that scheme. In a sense, this is a
+        generalization of some of the protections we give file URLs, but
+        instead of lumping them all together into one "local" bucket, this
+        patch creates a separate bucket for each scheme.
+        For a while, I tried using a separate bucket for each origin. That
+        would have played nicely with what Blob URLs are trying to do, but some
+        "chrome" URL pages rely on being able to display other chrome URL
+        pages, even in different origins. For example, the New Tab Page shows
+        thumbnails from the "thumbnail" host.
+        This patch also removes a bunch of unused code. I've also propagated
+        the "deprecated" status of deprecatedCanDisplay to
+        deprecatedShouldTreatURLAsLocal because that method has no other
+        callers and is really asking for uppercase/lowercase bugs. I dream of
+        someday removing these functions.
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+         https://bugs.webkit.org/show_bug.cgi?id=50182
+        This patch adds a Chromium API for registering schemes as
+        display-isolated. In a subsequent patch, I'll change the "chrome"
+        scheme in Chrome to be display isolated instead of local. That will
+        prevent file URLs from linking to chrome URLs.
+
+        * public/WebSecurityPolicy.h:
+        * src/WebSecurityPolicy.cpp:
+
 2010-11-30  James Robinson  <jamesr@chromium.org>
 
         Reviewed by Dimitri Glazkov.
index 9cf293d31709b09baa2422aca9fa22f1130d3b51..f15dd7587851207e6d31081ab914e511fda30147 100644 (file)
@@ -41,21 +41,15 @@ class WebURL;
 class WebSecurityPolicy {
 public:
     // Registers a URL scheme to be treated as a local scheme (i.e., with the
-    // same security rules as those applied to "file" URLs). This means that
+    // same security rules as those applied to "file" URLs).  This means that
     // normal pages cannot link to or access URLs of this scheme.
     WEBKIT_API static void registerURLSchemeAsLocal(const WebString&);
 
-    // Registers a URL scheme to be treated as a noAccess scheme. This means
+    // Registers a URL scheme to be treated as a noAccess scheme.  This means
     // that pages loaded with this URL scheme cannot access pages loaded with
     // any other URL scheme.
     WEBKIT_API static void registerURLSchemeAsNoAccess(const WebString&);
 
-    // Registers a URL scheme to be treated as display-isolated. This means
-    // that pages cannot display these URLs unless they are from the same
-    // scheme. For example, pages in other origin cannot create iframes or
-    // hyperlinks to URLs with the scheme.
-    WEBKIT_API static void registerURLSchemeAsDisplayIsolated(const WebString&);
-
     // Registers a URL scheme to not generate mixed content warnings when
     // included by an HTTPS page.
     WEBKIT_API static void registerURLSchemeAsSecure(const WebString&);
@@ -68,7 +62,7 @@ public:
         const WebURL& sourceOrigin, const WebString& destinationProtocol,
         const WebString& destinationHost, bool allowDestinationSubdomains);
     WEBKIT_API static void resetOriginAccessWhitelists();
-
+    
     // Returns whether the url should be allowed to see the referrer
     // based on their respective protocols.
     WEBKIT_API static bool shouldHideReferrer(const WebURL& url, const WebString& referrer);
index 8e4e70208ee87590a0d2d8a977f3e8c4d3d69f27..58d0893dbfcf5ea88b47f05707d8995ef8a96909 100644 (file)
@@ -52,11 +52,6 @@ void WebSecurityPolicy::registerURLSchemeAsNoAccess(const WebString& scheme)
     SchemeRegistry::registerURLSchemeAsNoAccess(scheme);
 }
 
-void WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(const WebString& scheme)
-{
-    SchemeRegistry::registerURLSchemeAsDisplayIsolated(scheme);
-}
-
 void WebSecurityPolicy::registerURLSchemeAsSecure(const WebString& scheme)
 {
     SchemeRegistry::registerURLSchemeAsSecure(scheme);
index e4ed5d9d964b776c21e4d33c709f6dcca3d7515f..e8c8f3322a16e2d03f890807ef55c0827f9a564c 100644 (file)
@@ -252,7 +252,7 @@ void QWebSecurityOrigin::removeLocalScheme(const QString& scheme)
 QStringList QWebSecurityOrigin::localSchemes()
 {
     QStringList list;
-    const URLSchemesMap& map = SchemeRegistry::localSchemes();
+    const URLSchemesMap& map = SchemeRegistry::localURLSchemes();
     URLSchemesMap::const_iterator end = map.end();
     for (URLSchemesMap::const_iterator i = map.begin(); i != end; ++i) {
         const QString scheme = *i;
index 012f1d7ee71f42f15e783e3c3c83408e39ff4311..9f707232af1be15dccfd9f632d51c32a9f824aec 100644 (file)
@@ -1,3 +1,39 @@
+2010-11-30  Ojan Vafai  <ojan@chromium.org>
+
+        Revert r72876. It caused a ~30% perf regression in chromium's bloat-http test
+        https://bugs.webkit.org/show_bug.cgi?id=50288
+
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+        https://bugs.webkit.org/show_bug.cgi?id=50182
+        A display-isolated URL can only be displayed (e.g., put in an iframe,
+        hyperlinked to) by documents from that scheme. In a sense, this is a
+        generalization of some of the protections we give file URLs, but
+        instead of lumping them all together into one "local" bucket, this
+        patch creates a separate bucket for each scheme.
+        For a while, I tried using a separate bucket for each origin. That
+        would have played nicely with what Blob URLs are trying to do, but some
+        "chrome" URL pages rely on being able to display other chrome URL
+        pages, even in different origins. For example, the New Tab Page shows
+        thumbnails from the "thumbnail" host.
+        This patch also removes a bunch of unused code. I've also propagated
+        the "deprecated" status of deprecatedCanDisplay to
+        deprecatedShouldTreatURLAsLocal because that method has no other
+        callers and is really asking for uppercase/lowercase bugs. I dream of
+        someday removing these functions.
+        2010-11-29 Adam Barth <abarth@webkit.org (:abarth) (r)>
+        Reviewed by Darin Adler.
+        Introduce the notion of a "display-isolated" URL scheme for use by Chrome-internal URLs
+         https://bugs.webkit.org/show_bug.cgi?id=50182
+        This patch adds a Chromium API for registering schemes as
+        display-isolated. In a subsequent patch, I'll change the "chrome"
+        scheme in Chrome to be display isolated instead of local. That will
+        prevent file URLs from linking to chrome URLs.
+
+        * Api/qwebsecurityorigin.cpp:
+        (QWebSecurityOrigin::localSchemes):
+
 2010-11-29  Vangelis Kokkevis  <vangelis@chromium.org>
 
         Reviewed by Simon Fraser.