Changeset 80718 in webkit


Ignore:
Timestamp:
Mar 10, 2011 7:17:57 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

2011-03-10 Pavel Feldman <pfeldman@chromium.org>

Not reviewed: rolling out r80478 and its follow ups for breaking
inspector and engadget.com.
https://bugs.webkit.org/show_bug.cgi?id=49401

  • dom/Document.cpp: (WebCore::Document::Document): (WebCore::performTask): (WebCore::Document::postTask):
  • dom/Document.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::setDefersLoading):
  • manual-tests/database-callback-deferred.html: Removed.
  • page/PageGroupLoadDeferrer.cpp: (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer): (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer):

2011-03-10 Pavel Feldman <pfeldman@chromium.org>

Not reviewed: rolling out r80478 and its follow ups for breaking
inspector and engadget.com.
https://bugs.webkit.org/show_bug.cgi?id=49401

  • platform/gtk/Skipped:
Location:
trunk
Files:
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r80717 r80718  
     12011-03-10  Pavel Feldman  <pfeldman@chromium.org>
     2
     3        Not reviewed: rolling out r80478 and its follow ups for breaking
     4        inspector and engadget.com.
     5        https://bugs.webkit.org/show_bug.cgi?id=49401
     6
     7        * platform/gtk/Skipped:
     8
    192011-03-10  Philippe Normand  <pnormand@igalia.com>
    210
  • trunk/LayoutTests/platform/gtk/Skipped

    r80717 r80718  
    189189# https://bugs.webkit.org/show_bug.cgi?id=55135
    190190http/tests/incremental/slow-utf8-html.pl
    191 
    192 # https://bugs.webkit.org/show_bug.cgi?id=55941
    193 inspector/console/console-api-on-call-frame.html
    194 inspector/debugger/debug-inlined-scripts.html
    195 inspector/debugger/debugger-cyclic-ref.html
    196 inspector/debugger/debugger-eval-on-call-frame.html
    197 inspector/debugger/debugger-eval-while-paused.html
    198 inspector/debugger/debugger-expand-scope.html
    199 inspector/debugger/debugger-no-nested-pause.html
    200 inspector/debugger/debugger-pause-in-eval-script.html
    201 inspector/debugger/debugger-pause-on-breakpoint.html
    202 inspector/debugger/debugger-pause-on-debugger-statement.html
    203 inspector/debugger/debugger-pause-on-exception.html
    204 inspector/debugger/debugger-proto-property.html
    205 inspector/debugger/debugger-step-in.html
    206 inspector/debugger/debugger-step-over.html
    207 inspector/debugger/debugger-suspend-active-dom-objects.html
    208 inspector/extensions/extensions-resources.html
    209191
    210192###############################################################################
  • trunk/Source/WebCore/ChangeLog

    r80716 r80718  
     12011-03-10  Pavel Feldman  <pfeldman@chromium.org>
     2
     3        Not reviewed: rolling out r80478 and its follow ups for breaking
     4        inspector and engadget.com.
     5        https://bugs.webkit.org/show_bug.cgi?id=49401
     6
     7        * dom/Document.cpp:
     8        (WebCore::Document::Document):
     9        (WebCore::performTask):
     10        (WebCore::Document::postTask):
     11        * dom/Document.h:
     12        * loader/FrameLoader.cpp:
     13        (WebCore::FrameLoader::setDefersLoading):
     14        * manual-tests/database-callback-deferred.html: Removed.
     15        * page/PageGroupLoadDeferrer.cpp:
     16        (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):
     17        (WebCore::PageGroupLoadDeferrer::~PageGroupLoadDeferrer):
     18
    1192011-03-10  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
    220
  • trunk/Source/WebCore/dom/Document.cpp

    r80507 r80718  
    88 * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
    99 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
    10  * Copyright (C) Research In Motion, Limited 2010-2011.
    1110 *
    1211 * This library is free software; you can redistribute it and/or
     
    438437    , m_writeRecursionIsTooDeep(false)
    439438    , m_writeRecursionDepth(0)
    440     , m_pendingTasksTimer(this, &Document::pendingTasksTimerFired)
    441439{
    442440    m_document = this;
     
    47194717};
    47204718
    4721 void Document::didReceiveTask(void* untypedContext)
     4719static void performTask(void* ctx)
    47224720{
    47234721    ASSERT(isMainThread());
    47244722
    4725     OwnPtr<PerformTaskContext> context = adoptPtr(static_cast<PerformTaskContext*>(untypedContext));
     4723    PerformTaskContext* context = reinterpret_cast<PerformTaskContext*>(ctx);
    47264724    ASSERT(context);
    47274725
    4728     Document* document = context->documentReference->document();
    4729     if (!document)
    4730         return;
    4731 
    4732     Page* page = document->page();
    4733     if ((page && page->defersLoading()) || !document->m_pendingTasks.isEmpty()) {
    4734         document->m_pendingTasks.append(context->task.release());
    4735         return;
    4736     }
    4737 
    4738     context->task->performTask(document);
     4726    if (Document* document = context->documentReference->document())
     4727        context->task->performTask(document);
     4728
     4729    delete context;
    47394730}
    47404731
    47414732void Document::postTask(PassOwnPtr<Task> task)
    47424733{
    4743     callOnMainThread(didReceiveTask, new PerformTaskContext(m_weakReference, task));
    4744 }
    4745 
    4746 void Document::pendingTasksTimerFired(Timer<Document>*)
    4747 {
    4748     while (!m_pendingTasks.isEmpty()) {
    4749         OwnPtr<Task> task = m_pendingTasks[0].release();
    4750         m_pendingTasks.remove(0);
    4751         task->performTask(this);
    4752     }
    4753 }
    4754 
    4755 void Document::suspendScheduledTasks()
    4756 {
    4757     suspendScriptedAnimationControllerCallbacks();
    4758     suspendActiveDOMObjects(ActiveDOMObject::WillShowDialog);
    4759     asyncScriptRunner()->suspend();
    4760     m_pendingTasksTimer.stop();
    4761     if (m_parser)
    4762         m_parser->suspendScheduledTasks();
    4763 }
    4764 
    4765 void Document::resumeScheduledTasks()
    4766 {
    4767     if (m_parser)
    4768         m_parser->resumeScheduledTasks();
    4769     if (!m_pendingTasks.isEmpty())
    4770         m_pendingTasksTimer.startOneShot(0);
    4771     asyncScriptRunner()->resume();
    4772     resumeActiveDOMObjects();
    4773     resumeScriptedAnimationControllerCallbacks();
     4734    callOnMainThread(performTask, new PerformTaskContext(m_weakReference, task));
    47744735}
    47754736
  • trunk/Source/WebCore/dom/Document.h

    r80478 r80718  
    11231123    ContentSecurityPolicy* contentSecurityPolicy() { return m_contentSecurityPolicy.get(); }
    11241124
    1125     void suspendScheduledTasks();
    1126     void resumeScheduledTasks();
    1127 
    11281125protected:
    11291126    Document(Frame*, const KURL&, bool isXHTML, bool isHTML);
     
    11711168
    11721169    void loadEventDelayTimerFired(Timer<Document>*);
    1173 
    1174     void pendingTasksTimerFired(Timer<Document>*);
    1175 
    1176     static void didReceiveTask(void*);
    11771170
    11781171    OwnPtr<CSSStyleSelector> m_styleSelector;
     
    14421435
    14431436    RefPtr<ContentSecurityPolicy> m_contentSecurityPolicy;
    1444 
    1445     Timer<Document> m_pendingTasksTimer;
    1446     Vector<OwnPtr<Task> > m_pendingTasks;
    14471437};
    14481438
  • trunk/Source/WebCore/loader/FrameLoader.cpp

    r80478 r80718  
    254254        startCheckCompleteTimer();
    255255    }
    256 
    257     // This code is not logically part of load deferring, but we do not want JS code executed beneath modal
    258     // windows or sheets, which is exactly when PageGroupLoadDeferrer is used.
    259     if (defers)
    260         m_frame->document()->suspendScheduledTasks();
    261     else
    262         m_frame->document()->resumeScheduledTasks();
    263256}
    264257
  • trunk/Source/WebCore/page/PageGroupLoadDeferrer.cpp

    r80478 r80718  
    4040    for (HashSet<Page*>::const_iterator it = pages.begin(); it != end; ++it) {
    4141        Page* otherPage = *it;
    42         if ((deferSelf || otherPage != page) && !otherPage->defersLoading())
    43             m_deferredFrames.append(otherPage->mainFrame());
     42        if ((deferSelf || otherPage != page)) {
     43            if (!otherPage->defersLoading()) {
     44                m_deferredFrames.append(otherPage->mainFrame());
     45
     46                // This code is not logically part of load deferring, but we do not want JS code executed beneath modal
     47                // windows or sheets, which is exactly when PageGroupLoadDeferrer is used.
     48                // NOTE: if PageGroupLoadDeferrer is ever used for tasks other than showing a modal window or sheet,
     49                // the constructor will need to take a ActiveDOMObject::ReasonForSuspension.
     50                for (Frame* frame = otherPage->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
     51                    frame->document()->suspendScriptedAnimationControllerCallbacks();
     52                    frame->document()->suspendActiveDOMObjects(ActiveDOMObject::WillShowDialog);
     53                    frame->document()->asyncScriptRunner()->suspend();
     54                    if (DocumentParser* parser = frame->document()->parser())
     55                        parser->suspendScheduledTasks();
     56                }
     57            }
     58        }
    4459    }
    4560
     
    5368{
    5469    for (size_t i = 0; i < m_deferredFrames.size(); ++i) {
    55         if (Page* page = m_deferredFrames[i]->page())
     70        if (Page* page = m_deferredFrames[i]->page()) {
    5671            page->setDefersLoading(false);
     72
     73            for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
     74                frame->document()->resumeActiveDOMObjects();
     75                frame->document()->resumeScriptedAnimationControllerCallbacks();
     76                frame->document()->asyncScriptRunner()->resume();
     77                if (DocumentParser* parser = frame->document()->parser())
     78                    parser->resumeScheduledTasks();
     79            }
     80        }
    5781    }
    5882}
Note: See TracChangeset for help on using the changeset viewer.