Changeset 101842 in webkit


Ignore:
Timestamp:
Dec 2, 2011 11:39:04 AM (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.

Relanding, depends on http://codereview.chromium.org/8748015/
to fix a sandboxing issue on Chromium/Linux.

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 implementation of the new WebThread methods is in
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

    r101841 r101842  
     12011-11-30  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        Relanding, depends on http://codereview.chromium.org/8748015/
     9        to fix a sandboxing issue on Chromium/Linux.
     10
     11        Add addTaskObserver and removeTaskObserver to WebThread,
     12        along with a new WebThread::TaskObserver interface.
     13
     14        For mutation observers, add a TaskObserver to the main thread
     15        to deliver mutations after each task runs.
     16
     17        The Chromium implementation of the new WebThread methods is in
     18        http://codereview.chromium.org/8586038/.
     19
     20        * public/platform/WebThread.h:
     21        (WebKit::WebThread::TaskObserver::~TaskObserver):
     22        * src/WebKit.cpp:
     23        (WebKit::initialize):
     24        (WebKit::shutdown):
     25
    1262011-12-02  Sheriff Bot  <webkit.review.bot@gmail.com>
    227
  • trunk/Source/WebKit/chromium/public/platform/WebThread.h

    r101429 r101842  
    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

    r101576 r101842  
    3838#include "TextEncoding.h"
    3939#include "V8Binding.h"
     40#include "WebKitMutationObserver.h"
    4041#include "WebKitPlatformSupport.h"
    4142#include "WebMediaPlayerClientImpl.h"
    4243#include "WebSocket.h"
     44#include "WebThread.h"
    4345#include "WorkerContextExecutionProxy.h"
    4446#include "v8.h"
     
    5052
    5153namespace WebKit {
     54
     55#if ENABLE(MUTATION_OBSERVERS)
     56namespace {
     57
     58class EndOfTaskRunner : public WebThread::TaskObserver {
     59public:
     60    virtual void didProcessTask()
     61    {
     62        WebCore::WebKitMutationObserver::deliverAllMutations();
     63    }
     64};
     65
     66} // namespace
     67
     68static WebThread::TaskObserver* s_endOfTaskRunner = 0;
     69#endif // ENABLE(MUTATION_OBSERVERS)
    5270
    5371// Make sure we are not re-initialized in the same address space.
     
    7492    v8::V8::Initialize();
    7593    WebCore::V8BindingPerIsolateData::ensureInitialized(v8::Isolate::GetCurrent());
     94
     95#if ENABLE(MUTATION_OBSERVERS)
     96    ASSERT(!s_endOfTaskRunner);
     97    s_endOfTaskRunner = new EndOfTaskRunner;
     98    webKitPlatformSupport->currentThread()->addTaskObserver(s_endOfTaskRunner);
     99#endif
    76100}
    77101
     
    102126void shutdown()
    103127{
     128#if ENABLE(MUTATION_OBSERVERS)
     129    if (s_endOfTaskRunner) {
     130        s_webKitPlatformSupport->currentThread()->removeTaskObserver(s_endOfTaskRunner);
     131        delete s_endOfTaskRunner;
     132        s_endOfTaskRunner = 0;
     133    }
     134#endif
    104135    s_webKitPlatformSupport = 0;
    105136}
Note: See TracChangeset for help on using the changeset viewer.