Title: [101418] trunk/Source/WebKit/chromium
- Revision
- 101418
- Author
- ad...@chromium.org
- Date
- 2011-11-29 13:33:55 -0800 (Tue, 29 Nov 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.
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):
Modified Paths
Diff
Modified: trunk/Source/WebKit/chromium/ChangeLog (101417 => 101418)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-11-29 21:31:47 UTC (rev 101417)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-11-29 21:33:55 UTC (rev 101418)
@@ -1,3 +1,24 @@
+2011-11-28 Adam Klein <ad...@chromium.org>
+
+ [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):
+
2011-11-29 Pavel Feldman <pfeld...@google.com>
Web Inspector: split Preferences into Preferences and Capabilities.
Modified: trunk/Source/WebKit/chromium/public/platform/WebThread.h (101417 => 101418)
--- trunk/Source/WebKit/chromium/public/platform/WebThread.h 2011-11-29 21:31:47 UTC (rev 101417)
+++ trunk/Source/WebKit/chromium/public/platform/WebThread.h 2011-11-29 21:33:55 UTC (rev 101418)
@@ -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 (101417 => 101418)
--- trunk/Source/WebKit/chromium/src/WebKit.cpp 2011-11-29 21:31:47 UTC (rev 101417)
+++ trunk/Source/WebKit/chromium/src/WebKit.cpp 2011-11-29 21:33:55 UTC (rev 101418)
@@ -39,9 +39,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"
@@ -52,6 +54,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;
@@ -75,6 +93,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)
@@ -107,6 +131,13 @@
{
delete WebCore::CCProxy::mainThread();
WebCore::CCProxy::setMainThread(0);
+#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
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes