Title: [125714] trunk/Source/WebKit/blackberry
Revision
125714
Author
[email protected]
Date
2012-08-15 15:07:46 -0700 (Wed, 15 Aug 2012)

Log Message

[BlackBerry] Upstream FrameLoaderClientBlackBerry::securityOriginForNewDocument()
https://bugs.webkit.org/show_bug.cgi?id=94139

Patch by Yong Li <[email protected]> on 2012-08-15
Reviewed by Antonio Gomes.

Keep same security origin when a file URL automatically redirects to its child folder.
This patch will be reverted when we finish the better solution.
PR# 172333 and PR# 180590.

* WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
(WebCore::FrameLoaderClientBlackBerry::FrameLoaderClientBlackBerry):
(WebCore::FrameLoaderClientBlackBerry::dispatchDidStartProvisionalLoad):
(WebCore::FrameLoaderClientBlackBerry::securityOriginForNewDocument):
(WebCore):
* WebCoreSupport/FrameLoaderClientBlackBerry.h:
(FrameLoaderClientBlackBerry):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/ChangeLog (125713 => 125714)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-08-15 21:54:50 UTC (rev 125713)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-08-15 22:07:46 UTC (rev 125714)
@@ -1,5 +1,24 @@
 2012-08-15  Yong Li  <[email protected]>
 
+        [BlackBerry] Upstream FrameLoaderClientBlackBerry::securityOriginForNewDocument()
+        https://bugs.webkit.org/show_bug.cgi?id=94139
+
+        Reviewed by Antonio Gomes.
+
+        Keep same security origin when a file URL automatically redirects to its child folder.
+        This patch will be reverted when we finish the better solution.
+        PR# 172333 and PR# 180590.
+
+        * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
+        (WebCore::FrameLoaderClientBlackBerry::FrameLoaderClientBlackBerry):
+        (WebCore::FrameLoaderClientBlackBerry::dispatchDidStartProvisionalLoad):
+        (WebCore::FrameLoaderClientBlackBerry::securityOriginForNewDocument):
+        (WebCore):
+        * WebCoreSupport/FrameLoaderClientBlackBerry.h:
+        (FrameLoaderClientBlackBerry):
+
+2012-08-15  Yong Li  <[email protected]>
+
         [BlackBerry] Should not keep recreating GeoTracker in setEnableHighAccuracy()
         https://bugs.webkit.org/show_bug.cgi?id=94136
 

Modified: trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp (125713 => 125714)


--- trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp	2012-08-15 21:54:50 UTC (rev 125713)
+++ trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp	2012-08-15 22:07:46 UTC (rev 125714)
@@ -108,6 +108,7 @@
     , m_pluginView(0)
     , m_hasSentResponseToPlugin(false)
     , m_cancelLoadOnNextData(false)
+    , m_wasProvisionalLoadTriggeredByUserGesture(true) // To avoid affecting the first load.
 {
 }
 
@@ -504,6 +505,8 @@
 
     if (m_webPagePrivate->m_dumpRenderTree)
         m_webPagePrivate->m_dumpRenderTree->didStartProvisionalLoadForFrame(m_frame);
+
+    m_wasProvisionalLoadTriggeredByUserGesture = ScriptController::processingUserGesture();
 }
 
 void FrameLoaderClientBlackBerry::dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse& response)
@@ -1252,4 +1255,22 @@
     m_webPagePrivate->m_client->notifyDidLoadFromApplicationCache();
 }
 
+PassRefPtr<SecurityOrigin> FrameLoaderClientBlackBerry::securityOriginForNewDocument(const KURL& url)
+{
+    // What we are trying to do here is to keep using the old path as origin when a file-based html page
+    // changes its location to some html in a subfolder. This will allow some file-based html packages
+    // to work smoothly even with security checks enabled.
+
+    RefPtr<SecurityOrigin> newSecurityOrigin = SecurityOrigin::create(url);
+
+    if (m_wasProvisionalLoadTriggeredByUserGesture || !url.isLocalFile())
+        return newSecurityOrigin;
+
+    RefPtr<SecurityOrigin> currentSecurityOrigin = m_frame->document()->securityOrigin();
+    if (currentSecurityOrigin && currentSecurityOrigin->containsInFolder(newSecurityOrigin.get()))
+        return currentSecurityOrigin;
+
+    return newSecurityOrigin;
+}
+
 } // WebCore

Modified: trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.h (125713 => 125714)


--- trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.h	2012-08-15 21:54:50 UTC (rev 125713)
+++ trunk/Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.h	2012-08-15 22:07:46 UTC (rev 125714)
@@ -170,6 +170,8 @@
 
     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext();
 
+    virtual PassRefPtr<SecurityOrigin> securityOriginForNewDocument(const KURL&);
+
     void readyToRender(bool pageIsVisuallyNonEmpty);
 
     void doPendingFragmentScroll();
@@ -215,6 +217,8 @@
 
     // Used to stop media files from loading because we don't need to have the entire file loaded by WebKit.
     bool m_cancelLoadOnNextData;
+
+    bool m_wasProvisionalLoadTriggeredByUserGesture;
 };
 
 } // WebCore
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to