Reviewed by Adele.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Feb 2007 02:40:03 +0000 (02:40 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Feb 2007 02:40:03 +0000 (02:40 +0000)
        - fixed <rdar://problem/4922764> ASSERTION: (!m_contentFunction) in PolicyCheck::call trying to visit feed URL (CNN, Apple, etc.)

        * loader/FrameLoader.cpp:
        (WebCore::FrameLoader::stopPolicyCheck): Call new cancel method instead of call(false) on old check.
        (WebCore::PolicyCheck::cancel): call any callback function that is set with false or PolicyIgnore as
        appropriate.
        * loader/FrameLoader.h:

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

WebCore/ChangeLog
WebCore/loader/FrameLoader.cpp
WebCore/loader/FrameLoader.h

index 186212e479367029ef6c4df7c9149b72ba696f78..7e8c4c7454f79741d09b88411c14fdeba6f10c79 100644 (file)
@@ -1,3 +1,15 @@
+2007-02-01  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Adele.
+        
+        - fixed <rdar://problem/4922764> ASSERTION: (!m_contentFunction) in PolicyCheck::call trying to visit feed URL (CNN, Apple, etc.)
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::stopPolicyCheck): Call new cancel method instead of call(false) on old check.
+        (WebCore::PolicyCheck::cancel): call any callback function that is set with false or PolicyIgnore as
+        appropriate.
+        * loader/FrameLoader.h:
+
 2007-02-01  Beth Dakin  <bdakin@apple.com>
 
         Reviewed by Hyatt.
index c400721174d3d9d3e7e1e32166862c10aae05ac5..8c7dbe5b430664e6a7c7caf15556c8bcc7f3c5d3 100644 (file)
@@ -2619,8 +2619,7 @@ void FrameLoader::stopPolicyCheck()
     m_client->cancelPolicyCheck();
     PolicyCheck check = m_policyCheck;
     m_policyCheck.clear();
-    check.clearRequest();
-    check.call(false);
+    check.cancel();
 }
 
 void FrameLoader::checkLoadCompleteForThisFrame()
@@ -4218,6 +4217,17 @@ void PolicyCheck::clearRequest()
     m_frameName = String();
 }
 
+void PolicyCheck::cancel()
+{
+    clearRequest();
+    if (m_navigationFunction)
+        m_navigationFunction(m_argument, m_request, m_formState.get(), false);
+    if (m_newWindowFunction)
+        m_newWindowFunction(m_argument, m_request, m_formState.get(), m_frameName, false);
+    if (m_contentFunction)
+        m_contentFunction(m_argument, PolicyIgnore);
+}
+
 void FrameLoader::setTitle(const String& title)
 {
     documentLoader()->setTitle(title);
index f4fc11b0f71ee61dce13f2903f136bb42ca6e837..bbe24f0142a70b86faa3965bb3619980fe6daf65 100644 (file)
@@ -109,6 +109,7 @@ namespace WebCore {
 
         void call(bool shouldContinue);
         void call(PolicyAction);
+        void cancel();
 
     private:
         ResourceRequest m_request;