[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:20:43 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 7ce491ffd71c2d4bcc7172d1f12e4738ec4b0b5b
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jan 21 22:35:51 2003 +0000

            Added support to pause and resume javascript timers.  This allows pages
            that have javascript timers to be added to the page cache.
    
            Fixes 3126138.
    
            Reviewed by trey and maciej.
    
            * khtml/ecma/kjs_window.cpp:
            (Window::pauseTimeouts):
            (Window::resumeTimeouts):
            (WindowQObject::pauseTimeouts):
            (WindowQObject::resumeTimeouts):
            (WindowQObject::timerEvent):
            * khtml/ecma/kjs_window.h:
            * kwq/KWQKHTMLPart.h:
            * kwq/KWQKHTMLPart.mm:
            (KWQKHTMLPart::pauseActions):
            (KWQKHTMLPart::resumeActions):
            (KWQKHTMLPart::canCachePage):
            (KWQKHTMLPart::openURLFromPageCache):
            * kwq/KWQObject.h:
            * kwq/KWQObject.mm:
            (QObject::pauseTimer):
            (QObject::_addTimer):
            (QObject::clearPausedTimers):
            (QObject::resumeTimers):
            (QObject::startTimer):
            * kwq/KWQPageState.h:
            * kwq/KWQPageState.mm:
            (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:]):
            (-[KWQPageState setPausedActions:int::]):
            (-[KWQPageState int::]):
            (-[KWQPageState _cleanupPausedActions]):
            (-[KWQPageState invalidate]):
            (-[KWQPageState dealloc]):
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
            (-[WebCoreBridge saveDocumentToPageCache]):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3370 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 0bce3e5..7a0c6b9 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,44 @@
+2003-01-21  Richard Williamson   <rjw at apple.com>
+
+        Added support to pause and resume javascript timers.  This allows pages 
+        that have javascript timers to be added to the page cache.
+        
+        Fixes 3126138.
+        
+        Reviewed by trey and maciej.
+
+        * khtml/ecma/kjs_window.cpp:
+        (Window::pauseTimeouts):
+        (Window::resumeTimeouts):
+        (WindowQObject::pauseTimeouts):
+        (WindowQObject::resumeTimeouts):
+        (WindowQObject::timerEvent):
+        * khtml/ecma/kjs_window.h:
+        * kwq/KWQKHTMLPart.h:
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::pauseActions):
+        (KWQKHTMLPart::resumeActions):
+        (KWQKHTMLPart::canCachePage):
+        (KWQKHTMLPart::openURLFromPageCache):
+        * kwq/KWQObject.h:
+        * kwq/KWQObject.mm:
+        (QObject::pauseTimer):
+        (QObject::_addTimer):
+        (QObject::clearPausedTimers):
+        (QObject::resumeTimers):
+        (QObject::startTimer):
+        * kwq/KWQPageState.h:
+        * kwq/KWQPageState.mm:
+        (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:]):
+        (-[KWQPageState setPausedActions:int::]):
+        (-[KWQPageState int::]):
+        (-[KWQPageState _cleanupPausedActions]):
+        (-[KWQPageState invalidate]):
+        (-[KWQPageState dealloc]):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
+        (-[WebCoreBridge saveDocumentToPageCache]):
+
 2003-01-21  Darin Adler  <darin at apple.com>
 
         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::createRenderer):
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 0bce3e5..7a0c6b9 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,44 @@
+2003-01-21  Richard Williamson   <rjw at apple.com>
+
+        Added support to pause and resume javascript timers.  This allows pages 
+        that have javascript timers to be added to the page cache.
+        
+        Fixes 3126138.
+        
+        Reviewed by trey and maciej.
+
+        * khtml/ecma/kjs_window.cpp:
+        (Window::pauseTimeouts):
+        (Window::resumeTimeouts):
+        (WindowQObject::pauseTimeouts):
+        (WindowQObject::resumeTimeouts):
+        (WindowQObject::timerEvent):
+        * khtml/ecma/kjs_window.h:
+        * kwq/KWQKHTMLPart.h:
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::pauseActions):
+        (KWQKHTMLPart::resumeActions):
+        (KWQKHTMLPart::canCachePage):
+        (KWQKHTMLPart::openURLFromPageCache):
+        * kwq/KWQObject.h:
+        * kwq/KWQObject.mm:
+        (QObject::pauseTimer):
+        (QObject::_addTimer):
+        (QObject::clearPausedTimers):
+        (QObject::resumeTimers):
+        (QObject::startTimer):
+        * kwq/KWQPageState.h:
+        * kwq/KWQPageState.mm:
+        (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:]):
+        (-[KWQPageState setPausedActions:int::]):
+        (-[KWQPageState int::]):
+        (-[KWQPageState _cleanupPausedActions]):
+        (-[KWQPageState invalidate]):
+        (-[KWQPageState dealloc]):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
+        (-[WebCoreBridge saveDocumentToPageCache]):
+
 2003-01-21  Darin Adler  <darin at apple.com>
 
         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::createRenderer):
diff --git a/WebCore/khtml/ecma/kjs_window.cpp b/WebCore/khtml/ecma/kjs_window.cpp
index 387fee7..eb63c78 100644
--- a/WebCore/khtml/ecma/kjs_window.cpp
+++ b/WebCore/khtml/ecma/kjs_window.cpp
@@ -884,6 +884,16 @@ bool Window::hasTimeouts()
 {
     return winq->hasTimeouts();
 }
+
+QMap<int, ScheduledAction*> *Window::pauseTimeouts(const void *key)
+{
+    return winq->pauseTimeouts(key);
+}
+
+void Window::resumeTimeouts(QMap<int, ScheduledAction*> *sa, const void *key)
+{
+    return winq->resumeTimeouts(sa, key);
+}
 #endif
 
 void Window::scheduleClose()
@@ -1537,6 +1547,31 @@ int WindowQObject::installTimeout(const Value &func, List args, int t, bool sing
   return id;
 }
 
+QMap<int, ScheduledAction*> *WindowQObject::pauseTimeouts(const void *key)
+{
+    QMapIterator<int,ScheduledAction*> it;
+
+    QMap<int, KJS::ScheduledAction*>*pausedActions = new QMap<int, KJS::ScheduledAction*>;
+    for (it = scheduledActions.begin(); it != scheduledActions.end(); ++it) {
+        int timerId = it.key();
+        pauseTimer (timerId, key);
+        pausedActions->insert(timerId, it.data());
+    }
+    scheduledActions.clear();
+    return pausedActions;
+}
+
+void WindowQObject::resumeTimeouts(QMap<int, ScheduledAction*> *sa, const void *key)
+{
+    QMapIterator<int,ScheduledAction*> it;
+    for (it = sa->begin(); it != sa->end(); ++it) {
+        int timerId = it.key();
+        scheduledActions.insert(timerId, it.data());
+    }
+    sa->clear();
+    resumeTimers (key, this);
+}
+
 void WindowQObject::clearTimeout(int timerId, bool delAction)
 {
   //kdDebug(6070) << "WindowQObject::clearTimeout " << this << " timerId=" << timerId << " delAction=" << delAction << endl;
@@ -1565,6 +1600,7 @@ void WindowQObject::timerEvent(QTimerEvent *e)
       clearTimeout(e->timerId(),false);
       scheduledActions.remove(it);
     }
+        
     if (!parent->part().isNull())
       action->execute(parent);
 
diff --git a/WebCore/khtml/ecma/kjs_window.h b/WebCore/khtml/ecma/kjs_window.h
index 244386a..8cb27d1 100644
--- a/WebCore/khtml/ecma/kjs_window.h
+++ b/WebCore/khtml/ecma/kjs_window.h
@@ -92,6 +92,8 @@ namespace KJS {
     void clearTimeout(int timerId);
 #ifdef APPLE_CHANGES
     bool hasTimeouts();
+    QMap<int, ScheduledAction*> *pauseTimeouts(const void *key);
+    void resumeTimeouts(QMap<int, ScheduledAction*>*sa, const void *key);
 #endif
     void scheduleClose();
     bool isSafeScript(ExecState *exec) const;
@@ -162,6 +164,8 @@ namespace KJS {
     void clearTimeout(int timerId, bool delAction = true);
 #ifdef APPLE_CHANGES
     bool hasTimeouts();
+    QMap<int, ScheduledAction*> *WindowQObject::pauseTimeouts(const void *key);
+    void WindowQObject::resumeTimeouts(QMap<int, ScheduledAction*> *sa, const void *key);
 #endif
 
   public slots:
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index 00b18f6..7b2305a 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -30,6 +30,8 @@
 
 #include "dom_nodeimpl.h"
 
+#include <CoreFoundation/CoreFoundation.h>
+
 class KHTMLPartPrivate;
 
 namespace khtml {
@@ -38,6 +40,7 @@ namespace khtml {
 
 namespace KJS {
     class SavedProperties;
+    class ScheduledAction;
 }
 
 #ifdef __OBJC__
@@ -46,12 +49,14 @@ namespace KJS {
 @class NSResponder;
 @class NSView;
 @class WebCoreBridge;
+ at class KWQPageState;
 #else
 class NSAttributedString;
 class NSEvent;
 class NSResponder;
 class NSView;
 class WebCoreBridge;
+class KWQPageState;
 #endif
 
 enum KWQSelectionDirection {
@@ -95,13 +100,15 @@ public:
 
     void unfocusWindow();
 
+    QMap<int, KJS::ScheduledAction*> *pauseActions(const void *key);
+    void resumeActions(QMap<int, KJS::ScheduledAction*> *actions, const void *key);
+    
     bool canCachePage();
     void saveWindowProperties(KJS::SavedProperties *windowProperties);
     void saveLocationProperties(KJS::SavedProperties *locationProperties);
     void restoreWindowProperties(KJS::SavedProperties *windowProperties);
     void restoreLocationProperties(KJS::SavedProperties *locationProperties);
-    void openURLFromPageCache(DOM::DocumentImpl *, RenderObject *, KURL *,
-        KJS::SavedProperties *windowProperties, KJS::SavedProperties *locationProperties);
+    void openURLFromPageCache(KWQPageState *state);
 
     void saveDocumentState();
     void restoreDocumentState();
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 5b6fa04..51d30e5 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -40,6 +40,7 @@
 #import "KWQDummyView.h"
 #import "KWQKJobClasses.h"
 #import "KWQLogging.h"
+#import "KWQPageState.h"
 
 #import "xml/dom2_eventsimpl.h"
 
@@ -469,13 +470,32 @@ NSView *KWQKHTMLPart::nextKeyViewForWidget(QWidget *startingWidget, KWQSelection
     return partForNode(node)->nextKeyView(node, direction);
 }
 
+QMap<int, KJS::ScheduledAction*> *KWQKHTMLPart::pauseActions(const void *key)
+{
+    if (d->m_doc && d->m_jscript) {
+        KJS::Window *w = KJS::Window::retrieveWindow(this);
+        if (w && w->hasTimeouts()) {
+            return w->pauseTimeouts(key);
+        }
+    }
+    return 0;
+}
+
+
+void KWQKHTMLPart::resumeActions(QMap<int, KJS::ScheduledAction*> *actions, const void *key)
+{
+    if (d->m_doc && d->m_jscript) {
+        KJS::Window *w = KJS::Window::retrieveWindow(this);
+        w->resumeTimeouts(actions, key);
+    }
+}
+
 bool KWQKHTMLPart::canCachePage()
 {
     // Only save page state if:
     // 1.  We're not a frame or frameset.
     // 2.  The page has no unload handler.
     // 3.  The page has no password fields.
-    // 4.  The page has no javascript timers.
     if (d->m_doc &&
         (d->m_frames.count() ||
         parentPart() ||
@@ -483,12 +503,6 @@ bool KWQKHTMLPart::canCachePage()
         d->m_doc->hasPasswordField())) {
         return false;
     }
-    if (d->m_doc && d->m_jscript) {
-        Window *w = Window::retrieveWindow(this);
-        if (w && w->hasTimeouts()) {
-            return false;
-        }
-    }
     return true;
 }
 
@@ -524,8 +538,15 @@ void KWQKHTMLPart::restoreLocationProperties(SavedProperties *locationProperties
         window->location()->restoreProperties(*locationProperties);
 }
 
-void KWQKHTMLPart::openURLFromPageCache(DocumentImpl *doc, RenderObject *renderer, KURL *url, SavedProperties *windowProperties, SavedProperties *locationProperties)
+void KWQKHTMLPart::openURLFromPageCache(KWQPageState *state)
 {
+    DocumentImpl *doc = [state document];
+    RenderObject *renderer = [state renderer];
+    KURL *url = [state URL];
+    SavedProperties *windowProperties = [state windowProperties];
+    SavedProperties *locationProperties = [state locationProperties];
+    QMap<int, KJS::ScheduledAction*> *actions = [state pausedActions];
+    
     d->m_redirectionTimer.stop();
 
     // We still have to close the previous part page.
@@ -585,6 +606,9 @@ void KWQKHTMLPart::openURLFromPageCache(DocumentImpl *doc, RenderObject *rendere
         
     restoreWindowProperties (windowProperties);
     restoreLocationProperties (locationProperties);
+
+    if (actions)
+        resumeActions (actions, state);
     
     checkCompleted();
 }
diff --git a/WebCore/kwq/KWQObject.h b/WebCore/kwq/KWQObject.h
index 0963207..9f9643a 100644
--- a/WebCore/kwq/KWQObject.h
+++ b/WebCore/kwq/KWQObject.h
@@ -67,6 +67,12 @@ class QVariant;
 class KWQGuardedPtrBase;
 class KWQSignal;
 
+#ifdef __OBJC__
+ at class NSTimer;
+#else
+class NSTimer;
+#endif
+
 class QObject : public Qt {
 public:
     QObject(QObject *parent = 0, const char *name = 0);
@@ -82,6 +88,10 @@ public:
     int startTimer(int);
     void killTimer(int);
     void killTimers();
+    void pauseTimer(int _timerId, const void *key);
+    void resumeTimers(const void *key, QObject *target);
+    static void clearPausedTimers (const void *key);
+    
     virtual void timerEvent(QTimerEvent *);
 
     void installEventFilter(const QObject *o) { _eventFilterObject = o; }
@@ -97,6 +107,8 @@ public:
     static const QObject *sender() { return _sender; }
 
 private:
+    void _addTimer(NSTimer *timer, int _timerId);
+
     // no copying or assignment
     QObject(const QObject &);
     QObject &operator=(const QObject &);
diff --git a/WebCore/kwq/KWQObject.mm b/WebCore/kwq/KWQObject.mm
index 74f0e6a..ca6d01b 100644
--- a/WebCore/kwq/KWQObject.mm
+++ b/WebCore/kwq/KWQObject.mm
@@ -31,11 +31,13 @@
 const QObject *QObject::_sender;
 
 static CFMutableDictionaryRef timerDictionaries;
+static CFMutableDictionaryRef allPausedTimers;
 
 @interface KWQObjectTimerTarget : NSObject
 {
     QObject *target;
     int timerId;
+    NSTimeInterval remainingTime;
 }
 
 - initWithQObject:(QObject *)object timerId:(int)timerId;
@@ -131,10 +133,94 @@ bool QObject::event(QEvent *)
     return false;
 }
 
-int QObject::startTimer(int milliseconds)
+void QObject::pauseTimer (int _timerId, const void *key)
 {
-    static int nextTimerID = 1;
+    NSMutableDictionary *timers = (NSMutableDictionary *)CFDictionaryGetValue(timerDictionaries, this);
+    NSNumber *timerId = [NSNumber numberWithInt:_timerId];
+    NSTimer *timer = (NSTimer *)[timers objectForKey:timerId];
+    KWQObjectTimerTarget *target = (KWQObjectTimerTarget *)[timer userInfo];
+    
+    if (target && [timer isValid]){
+        NSDate *fireDate = [timer fireDate];
+        NSTimeInterval remainingTime = [fireDate timeIntervalSinceDate: [NSDate date]];
+    
+        if (remainingTime < 0)
+            remainingTime = DBL_EPSILON;
+        
+        if (allPausedTimers == NULL) {
+            // The global targets dictionary itself leaks, but the contents are removed
+            // when each timer fires or is killed.
+            allPausedTimers = CFDictionaryCreateMutable(NULL, 0, NULL, &kCFTypeDictionaryValueCallBacks);
+        }
 
+        NSMutableArray *pausedTimers = (NSMutableArray *)CFDictionaryGetValue(allPausedTimers, key);
+        if (pausedTimers == nil) {
+            pausedTimers = [[NSMutableArray alloc] init];
+            CFDictionarySetValue(allPausedTimers, key, pausedTimers);
+            [pausedTimers release];
+        }
+        
+        target->remainingTime = remainingTime;
+        [pausedTimers addObject:target];
+                
+        [timer invalidate];
+        [timers removeObjectForKey:timerId];
+    }
+}
+
+void QObject::_addTimer(NSTimer *timer, int _timerId)
+{
+    NSMutableDictionary *timers = (NSMutableDictionary *)CFDictionaryGetValue(timerDictionaries, this);
+    if (timers == nil) {
+        timers = [[NSMutableDictionary alloc] init];
+        CFDictionarySetValue(timerDictionaries, this, timers);
+        [timers release];
+    }
+    [timers setObject:timer forKey:[NSNumber numberWithInt:_timerId]];
+}
+
+static int nextTimerID = 1;
+
+void QObject::clearPausedTimers (const void *key)
+{
+    if (allPausedTimers)
+        CFDictionaryRemoveValue(allPausedTimers, key);
+}
+
+void QObject::resumeTimers (const void *key, QObject *_target)
+{
+    if (allPausedTimers == NULL) {
+        return;
+    }
+    
+    int maxId = MAX(0, nextTimerID);
+        
+    NSMutableArray *pausedTimers = (NSMutableArray *)CFDictionaryGetValue(allPausedTimers, key);
+    if (pausedTimers == nil)
+        return;
+
+    int count = [pausedTimers count];
+    while (count--){
+        KWQObjectTimerTarget *target = [pausedTimers objectAtIndex: count];
+        target->target = _target;
+        NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:target->remainingTime
+            target:target
+            selector:@selector(timerFired)
+            userInfo:target
+            repeats:YES];
+        [pausedTimers removeLastObject];
+
+        maxId = MAX (maxId, target->timerId);
+                
+        _addTimer (timer, target->timerId);
+    }
+    nextTimerID = maxId+1;
+    
+    CFDictionaryRemoveValue(allPausedTimers, key);
+}
+
+int QObject::startTimer(int milliseconds)
+{
     if (timerDictionaries == NULL) {
         // The global timers dictionary itself leaks, but the contents are removed
         // when each timer fires or is killed.
@@ -156,7 +242,7 @@ int QObject::startTimer(int milliseconds)
          repeats:YES];
     [target release];
     
-    [timers setObject:timer forKey:[NSNumber numberWithInt:nextTimerID]];
+    _addTimer (timer, nextTimerID);
     
     return nextTimerID++;    
 }
diff --git a/WebCore/kwq/KWQPageState.h b/WebCore/kwq/KWQPageState.h
index 3869aee..e23c88d 100644
--- a/WebCore/kwq/KWQPageState.h
+++ b/WebCore/kwq/KWQPageState.h
@@ -25,6 +25,10 @@
 
 #import <Foundation/Foundation.h>
 
+#include <qmap.h>
+
+#include "kjs_window.h"
+
 class KURL;
 
 namespace DOM {
@@ -46,6 +50,7 @@ namespace KJS {
     KJS::SavedProperties *windowProperties;
     KJS::SavedProperties *locationProperties;
     khtml::RenderObject *docRenderer; 
+    QMap<int, KJS::ScheduledAction*> *pausedActions;
 }
 
 - initWithDocument:(DOM::DocumentImpl *)doc URL:(const KURL &)u windowProperties:(KJS::SavedProperties *)wp locationProperties:(KJS::SavedProperties *)lp;
@@ -55,7 +60,8 @@ namespace KJS {
 - (KJS::SavedProperties *)windowProperties;
 - (KJS::SavedProperties *)locationProperties;
 - (khtml::RenderObject *)renderer;
-
+- (void)setPausedActions: (QMap<int, KJS::ScheduledAction*> *)pa;
+- (QMap<int, KJS::ScheduledAction*> *)pausedActions;
 - (void)invalidate;
 
 @end
diff --git a/WebCore/kwq/KWQPageState.mm b/WebCore/kwq/KWQPageState.mm
index fb99183..db584f8 100644
--- a/WebCore/kwq/KWQPageState.mm
+++ b/WebCore/kwq/KWQPageState.mm
@@ -29,6 +29,7 @@
 
 #import "dom_docimpl.h"
 #import "khtmlview.h"
+#import "kjs_window.h"
 
 #import "KWQAssertions.h"
 #import "KWQKHTMLPart.h"
@@ -49,9 +50,34 @@ using KJS::SavedProperties;
     URL = new KURL(u);
     windowProperties = wp;
     locationProperties = lp;
+    
     return self;
 }
 
+- (void)setPausedActions: (QMap<int, KJS::ScheduledAction*> *)pa
+{
+    pausedActions = pa;
+}
+
+- (QMap<int, KJS::ScheduledAction*> *)pausedActions
+{
+    return pausedActions;
+}
+
+- (void)_cleanupPausedActions
+{
+    if (pausedActions){
+        QMapIterator<int,KJS::ScheduledAction*> it;
+        for (it = pausedActions->begin(); it != pausedActions->end(); ++it) {
+            KJS::ScheduledAction *action = *it;
+            delete action;
+        }
+        delete pausedActions;
+        pausedActions = 0;
+    }
+    QObject::clearPausedTimers(self);
+}
+
 // Called when the KWQPageState is restored.  It should relinquish ownership
 // of objects to core.
 - (void)invalidate
@@ -66,6 +92,8 @@ using KJS::SavedProperties;
     delete URL;
     URL = 0;
     
+    [self _cleanupPausedActions];
+    
     delete windowProperties;
     windowProperties = 0;
     delete locationProperties;
@@ -97,6 +125,8 @@ using KJS::SavedProperties;
     delete URL;
     delete windowProperties;
     delete locationProperties;
+    
+    [self _cleanupPausedActions];
 
     [super dealloc];
 }
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 29778bc..fbf965d 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -143,7 +143,7 @@ static bool initializedObjectCacheSize = FALSE;
 {
     if (pageCache) {
         KWQPageState *state = [pageCache objectForKey:@"WebCorePageState"];
-        _part->openURLFromPageCache([state document], [state renderer], [state URL], [state windowProperties], [state locationProperties]);
+        _part->openURLFromPageCache(state);
         [state invalidate];
         return;
     }
@@ -240,6 +240,9 @@ static bool initializedObjectCacheSize = FALSE;
                                                      windowProperties:windowProperties
                                                    locationProperties:locationProperties] autorelease];
 
+
+    [pageState setPausedActions: _part->pauseActions((const void *)pageState)];
+
     return [self saveDocumentToPageCache:pageState];
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list