Title: [101842] trunk/Source/WebKit/chromium
- Revision
- 101842
- Author
- [email protected]
- Date
- 2011-12-02 11:39:04 -0800 (Fri, 02 Dec 2011)
Log 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):
Modified Paths
Diff
Modified: trunk/Source/WebKit/chromium/ChangeLog (101841 => 101842)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-12-02 19:31:10 UTC (rev 101841)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-12-02 19:39:04 UTC (rev 101842)
@@ -1,3 +1,28 @@
+2011-11-30 Adam Klein <[email protected]>
+
+ [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):
+
2011-12-02 Sheriff Bot <[email protected]>
Unreviewed, rolling out r101833.
Modified: trunk/Source/WebKit/chromium/public/platform/WebThread.h (101841 => 101842)
--- trunk/Source/WebKit/chromium/public/platform/WebThread.h 2011-12-02 19:31:10 UTC (rev 101841)
+++ trunk/Source/WebKit/chromium/public/platform/WebThread.h 2011-12-02 19:39:04 UTC (rev 101842)
@@ -43,8 +43,16 @@
virtual void run() = 0;
};
+ class TaskObserver {
+ public:
+ virtual ~TaskObserver() { }
+ virtual void didProcessTask() = 0;
+ };
+
virtual void postTask(Task*) = 0;
virtual void postDelayedTask(Task*, long long delayMs) = 0;
+ virtual void addTaskObserver(TaskObserver*) { }
+ virtual void removeTaskObserver(TaskObserver*) { }
virtual ~WebThread() { }
};
Modified: trunk/Source/WebKit/chromium/src/WebKit.cpp (101841 => 101842)
--- trunk/Source/WebKit/chromium/src/WebKit.cpp 2011-12-02 19:31:10 UTC (rev 101841)
+++ trunk/Source/WebKit/chromium/src/WebKit.cpp 2011-12-02 19:39:04 UTC (rev 101842)
@@ -37,9 +37,11 @@
#include "Settings.h"
#include "TextEncoding.h"
#include "V8Binding.h"
+#include "WebKitMutationObserver.h"
#include "WebKitPlatformSupport.h"
#include "WebMediaPlayerClientImpl.h"
#include "WebSocket.h"
+#include "WebThread.h"
#include "WorkerContextExecutionProxy.h"
#include "v8.h"
@@ -50,6 +52,22 @@
namespace WebKit {
+#if ENABLE(MUTATION_OBSERVERS)
+namespace {
+
+class EndOfTaskRunner : public WebThread::TaskObserver {
+public:
+ virtual void didProcessTask()
+ {
+ WebCore::WebKitMutationObserver::deliverAllMutations();
+ }
+};
+
+} // namespace
+
+static WebThread::TaskObserver* s_endOfTaskRunner = 0;
+#endif // ENABLE(MUTATION_OBSERVERS)
+
// Make sure we are not re-initialized in the same address space.
// Doing so may cause hard to reproduce crashes.
static bool s_webKitInitialized = false;
@@ -73,6 +91,12 @@
v8::V8::SetEntropySource(&generateEntropy);
v8::V8::Initialize();
WebCore::V8BindingPerIsolateData::ensureInitialized(v8::Isolate::GetCurrent());
+
+#if ENABLE(MUTATION_OBSERVERS)
+ ASSERT(!s_endOfTaskRunner);
+ s_endOfTaskRunner = new EndOfTaskRunner;
+ webKitPlatformSupport->currentThread()->addTaskObserver(s_endOfTaskRunner);
+#endif
}
void initializeWithoutV8(WebKitPlatformSupport* webKitPlatformSupport)
@@ -101,6 +125,13 @@
void shutdown()
{
+#if ENABLE(MUTATION_OBSERVERS)
+ if (s_endOfTaskRunner) {
+ s_webKitPlatformSupport->currentThread()->removeTaskObserver(s_endOfTaskRunner);
+ delete s_endOfTaskRunner;
+ s_endOfTaskRunner = 0;
+ }
+#endif
s_webKitPlatformSupport = 0;
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes