Changeset 101418 in webkit


Ignore:
Timestamp:
Nov 29, 2011 1:33:55 PM (12 years ago)
Author:
adamk@chromium.org
Message:

[chromium] WebKitMutationObserver::deliverAllMutations should be exposed through the Chromium API
https://bugs.webkit.org/show_bug.cgi?id=71242

Reviewed by Darin Fisher.

Add addTaskObserver and removeTaskObserver to WebThread,
along with a new WebThread::TaskObserver interface.

For mutation observers, add a TaskObserver to the main thread
to deliver mutations after each task runs.

The Chromium side of this patch is http://codereview.chromium.org/8586038/

  • public/platform/WebThread.h:

(WebKit::WebThread::TaskObserver::~TaskObserver):

  • src/WebKit.cpp:

(WebKit::initialize):
(WebKit::shutdown):

Location:
trunk/Source/WebKit/chromium
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/chromium/ChangeLog

    r101381 r101418  
     12011-11-28  Adam Klein  <adamk@chromium.org>
     2
     3        [chromium] WebKitMutationObserver::deliverAllMutations should be exposed through the Chromium API
     4        https://bugs.webkit.org/show_bug.cgi?id=71242
     5
     6        Reviewed by Darin Fisher.
     7
     8        Add addTaskObserver and removeTaskObserver to WebThread,
     9        along with a new WebThread::TaskObserver interface.
     10
     11        For mutation observers, add a TaskObserver to the main thread
     12        to deliver mutations after each task runs.
     13
     14        The Chromium side of this patch is http://codereview.chromium.org/8586038/
     15
     16        * public/platform/WebThread.h:
     17        (WebKit::WebThread::TaskObserver::~TaskObserver):
     18        * src/WebKit.cpp:
     19        (WebKit::initialize):
     20        (WebKit::shutdown):
     21
    1222011-11-29  Pavel Feldman  <pfeldman@google.com>
    223
  • trunk/Source/WebKit/chromium/public/platform/WebThread.h

    r101224 r101418  
    4444    };
    4545
     46    class TaskObserver {
     47    public:
     48        virtual ~TaskObserver() { }
     49        virtual void didProcessTask() = 0;
     50    };
     51
    4652    virtual void postTask(Task*) = 0;
    4753    virtual void postDelayedTask(Task*, long long delayMs) = 0;
     54    virtual void addTaskObserver(TaskObserver*) { }
     55    virtual void removeTaskObserver(TaskObserver*) { }
    4856
    4957    virtual ~WebThread() { }
  • trunk/Source/WebKit/chromium/src/WebKit.cpp

    r100370 r101418  
    4040#include "TextEncoding.h"
    4141#include "V8Binding.h"
     42#include "WebKitMutationObserver.h"
    4243#include "WebKitPlatformSupport.h"
    4344#include "WebMediaPlayerClientImpl.h"
    4445#include "WebSocket.h"
     46#include "WebThread.h"
    4547#include "WorkerContextExecutionProxy.h"
    4648#include "v8.h"
     
    5254
    5355namespace WebKit {
     56
     57#if ENABLE(MUTATION_OBSERVERS)
     58namespace {
     59
     60class EndOfTaskRunner : public WebThread::TaskObserver {
     61public:
     62    virtual void didProcessTask()
     63    {
     64        WebCore::WebKitMutationObserver::deliverAllMutations();
     65    }
     66};
     67
     68} // namespace
     69
     70static WebThread::TaskObserver* s_endOfTaskRunner = 0;
     71#endif // ENABLE(MUTATION_OBSERVERS)
    5472
    5573// Make sure we are not re-initialized in the same address space.
     
    7694    v8::V8::Initialize();
    7795    WebCore::V8BindingPerIsolateData::ensureInitialized(v8::Isolate::GetCurrent());
     96
     97#if ENABLE(MUTATION_OBSERVERS)
     98    ASSERT(!s_endOfTaskRunner);
     99    s_endOfTaskRunner = new EndOfTaskRunner;
     100    webKitPlatformSupport->currentThread()->addTaskObserver(s_endOfTaskRunner);
     101#endif
    78102}
    79103
     
    108132    delete WebCore::CCProxy::mainThread();
    109133    WebCore::CCProxy::setMainThread(0);
     134#if ENABLE(MUTATION_OBSERVERS)
     135    if (s_endOfTaskRunner) {
     136        s_webKitPlatformSupport->currentThread()->removeTaskObserver(s_endOfTaskRunner);
     137        delete s_endOfTaskRunner;
     138        s_endOfTaskRunner = 0;
     139    }
     140#endif
    110141    s_webKitPlatformSupport = 0;
    111142}
Note: See TracChangeset for help on using the changeset viewer.