Reviewed by Darin.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Aug 2004 22:21:01 +0000 (22:21 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Aug 2004 22:21:01 +0000 (22:21 +0000)
- fixed <rdar://problem/3752509> Pop up windows not showing up within SAP's BW Module (changing location.href on new window created by window.open)

(actually the previous fix for this bug was mostly correct, but
this additional change is needed to avoid the regression in
<rdar://problem/3751025> REGRESSION: website rejects Safari 125.9
as "need to upgrade to IE 6", but didn't reject 125.8

So if merging for a software update, make sure to include both
this and the previous fix.

        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::write): When there is an immediate reidrect pending,
make sure to stop tokenizing, because we need to make sure no further
script tags are processed beyond the one that triggered the redirect.
        * khtml/khtml_part.cpp:
        (KHTMLPart::isImmediateRedirectPending): New method to allow
checking if a redirect is pending.
* khtml/khtml_part.h:

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/html/htmltokenizer.cpp
WebCore/khtml/khtml_part.cpp
WebCore/khtml/khtml_part.h

index 7b5cc68f59f133ebc58b2aebd79bb0c55bd4eec0..a7ee455b546e1239c5b8b672fba0abcc65affdaf 100644 (file)
@@ -1,3 +1,26 @@
+2004-08-13  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       - fixed <rdar://problem/3752509> Pop up windows not showing up within SAP's BW Module (changing location.href on new window created by window.open)
+       
+       (actually the previous fix for this bug was mostly correct, but
+       this additional change is needed to avoid the regression in
+       <rdar://problem/3751025> REGRESSION: website rejects Safari 125.9
+       as "need to upgrade to IE 6", but didn't reject 125.8
+
+       So if merging for a software update, make sure to include both
+       this and the previous fix.
+       
+        * khtml/html/htmltokenizer.cpp:
+        (khtml::HTMLTokenizer::write): When there is an immediate reidrect pending,
+       make sure to stop tokenizing, because we need to make sure no further
+       script tags are processed beyond the one that triggered the redirect.
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::isImmediateRedirectPending): New method to allow
+       checking if a redirect is pending.
+       * khtml/khtml_part.h:
+
 2004-08-15  David Hyatt  <hyatt@apple.com>
 
        Fix the blank textarea problem by ensuring that any change to a <textarea>'s DOM children causes the form control
index e6241e752ef5cb09b2e18f5a027a6d20fe494d91..dffbf38474c8066a9333702f3b679cc71bb74666 100644 (file)
@@ -1483,7 +1483,7 @@ void HTMLTokenizer::write(const TokenizerString &str, bool appendData)
 //     if (Entity)
 //         parseEntity(src, dest);
 
-    while (!src.isEmpty()) {
+    while (!src.isEmpty() && (!parser->doc()->part() || !parser->doc()->part()->isImmediateRedirectPending())) {
         // do we need to enlarge the buffer?
         checkBuffer();
 
index 04e877c6cca836816b949191006276f51f76d19f..0948d3688779a1f1b858a19975f037af5b1980ff 100644 (file)
@@ -1957,6 +1957,11 @@ void KHTMLPart::scheduleRedirection( double delay, const QString &url, bool doLo
     }
 }
 
+bool KHTMLPart::isImmediateRedirectPending()
+{
+  return d->m_scheduledRedirection != noRedirectionScheduled && d->m_delayRedirect == 0;
+}
+
 void KHTMLPart::scheduleHistoryNavigation( int steps )
 {
     d->m_scheduledRedirection = historyNavigationScheduled;
index 7b5de8bee4009f3079ff0522ae5b54fecbd23827..b0170c5733c6a7444c447106d24ec677cc61eede 100644 (file)
@@ -390,6 +390,8 @@ public:
    */
   void scheduleRedirection( double delay, const QString &url, bool lockHistory = true, bool userGesture = false );
 
+  bool isImmediateRedirectPending() const;
+
   /**
    * Schedules a history navigation operation (go forward, go back, etc.).
    * This is used for JavaScript-triggered location changes.