mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-03-15 11:30:11 +01:00
Remove V8 worker bindings (issue #451).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1211 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
0ffaf01b5b
commit
35c03f7b5a
@ -1,263 +0,0 @@
|
||||
Index: Platform/chromium/public/WebWorkerScriptObserver.h
|
||||
===================================================================
|
||||
--- Platform/chromium/public/WebWorkerScriptObserver.h (revision 0)
|
||||
+++ Platform/chromium/public/WebWorkerScriptObserver.h (revision 0)
|
||||
@@ -0,0 +1,50 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2013 Google Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions
|
||||
+ * are met:
|
||||
+ * 1. Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer.
|
||||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer in the
|
||||
+ * documentation and/or other materials provided with the distribution.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
|
||||
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
||||
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+ */
|
||||
+
|
||||
+#ifndef WebWorkerScriptObserver_h
|
||||
+#define WebWorkerScriptObserver_h
|
||||
+
|
||||
+#include <v8.h>
|
||||
+
|
||||
+namespace WebKit {
|
||||
+
|
||||
+ class WebURL;
|
||||
+ class WebWorkerRunLoop;
|
||||
+
|
||||
+ class WebWorkerScriptObserver {
|
||||
+ public:
|
||||
+ // Notifies that a new script context has been created for a worker.
|
||||
+ // This will be called only once per worker context.
|
||||
+ virtual void didCreateWorkerScriptContext(const WebWorkerRunLoop&, const WebURL&, v8::Handle<v8::Context>) { }
|
||||
+
|
||||
+ // WebKit is about to release its reference to a v8 context for a worker.
|
||||
+ virtual void willReleaseWorkerScriptContext(const WebWorkerRunLoop&, const WebURL&, v8::Handle<v8::Context>) { }
|
||||
+
|
||||
+ protected:
|
||||
+ virtual ~WebWorkerScriptObserver() { }
|
||||
+ };
|
||||
+
|
||||
+} // namespace WebKit
|
||||
+
|
||||
+#endif
|
||||
|
||||
Property changes on: Platform\chromium\public\WebWorkerScriptObserver.h
|
||||
___________________________________________________________________
|
||||
Added: svn:eol-style
|
||||
+ LF
|
||||
|
||||
Index: WebCore/bindings/v8/WorkerScriptController.cpp
|
||||
===================================================================
|
||||
--- WebCore/bindings/v8/WorkerScriptController.cpp (revision 145278)
|
||||
+++ WebCore/bindings/v8/WorkerScriptController.cpp (working copy)
|
||||
@@ -51,11 +51,23 @@
|
||||
|
||||
#if PLATFORM(CHROMIUM)
|
||||
#include <public/Platform.h>
|
||||
+#include <public/WebURL.h>
|
||||
#include <public/WebWorkerRunLoop.h>
|
||||
+#include <public/WebWorkerScriptObserver.h>
|
||||
#endif
|
||||
|
||||
namespace WebCore {
|
||||
|
||||
+namespace {
|
||||
+
|
||||
+static Vector<WebKit::WebWorkerScriptObserver*>& observerVector()
|
||||
+{
|
||||
+ AtomicallyInitializedStatic(Vector<WebKit::WebWorkerScriptObserver*>&, observers = *new Vector<WebKit::WebWorkerScriptObserver*>);
|
||||
+ return observers;
|
||||
+}
|
||||
+
|
||||
+} // namespace
|
||||
+
|
||||
WorkerScriptController::WorkerScriptController(WorkerContext* workerContext)
|
||||
: m_workerContext(workerContext)
|
||||
, m_isolate(v8::Isolate::New())
|
||||
@@ -73,6 +85,8 @@
|
||||
WorkerScriptController::~WorkerScriptController()
|
||||
{
|
||||
m_domDataStore.clear();
|
||||
+ if (!m_context.isEmpty())
|
||||
+ notifyWillReleaseWorkerScriptContext();
|
||||
#if PLATFORM(CHROMIUM)
|
||||
// The corresponding call to didStartWorkerRunLoop is in
|
||||
// WorkerThread::workerThread().
|
||||
@@ -134,6 +148,8 @@
|
||||
v8::Handle<v8::Object> globalObject = v8::Handle<v8::Object>::Cast(m_context->Global()->GetPrototype());
|
||||
globalObject->SetPrototype(jsWorkerContext);
|
||||
|
||||
+ notifyDidCreateWorkerScriptContext();
|
||||
+
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -258,6 +274,39 @@
|
||||
return workerContext->script();
|
||||
}
|
||||
|
||||
+void WorkerScriptController::addObserver(WebKit::WebWorkerScriptObserver* observer)
|
||||
+{
|
||||
+ if (WebCore::WorkerThread::workerThreadCount() > 0)
|
||||
+ return;
|
||||
+
|
||||
+ observerVector().append(observer);
|
||||
+}
|
||||
+
|
||||
+void WorkerScriptController::removeObserver(WebKit::WebWorkerScriptObserver* observer)
|
||||
+{
|
||||
+ if (WebCore::WorkerThread::workerThreadCount() > 0)
|
||||
+ return;
|
||||
+
|
||||
+ Vector<WebKit::WebWorkerScriptObserver*>& observers = observerVector();
|
||||
+ size_t pos = observers.find(observer);
|
||||
+ if (pos != notFound)
|
||||
+ observers.remove(pos);
|
||||
+}
|
||||
+
|
||||
+void WorkerScriptController::notifyDidCreateWorkerScriptContext()
|
||||
+{
|
||||
+ const Vector<WebKit::WebWorkerScriptObserver*>& observers = observerVector();
|
||||
+ for (Vector<WebKit::WebWorkerScriptObserver*>::const_iterator i = observers.begin(); i != observers.end(); ++i)
|
||||
+ (*i)->didCreateWorkerScriptContext(WebKit::WebWorkerRunLoop(&m_workerContext->thread()->runLoop()), m_workerContext->url(), m_context.get());
|
||||
+}
|
||||
+
|
||||
+void WorkerScriptController::notifyWillReleaseWorkerScriptContext()
|
||||
+{
|
||||
+ const Vector<WebKit::WebWorkerScriptObserver*>& observers = observerVector();
|
||||
+ for (Vector<WebKit::WebWorkerScriptObserver*>::const_iterator i = observers.begin(); i != observers.end(); ++i)
|
||||
+ (*i)->willReleaseWorkerScriptContext(WebKit::WebWorkerRunLoop(&m_workerContext->thread()->runLoop()), m_workerContext->url(), m_context.get());
|
||||
+}
|
||||
+
|
||||
} // namespace WebCore
|
||||
|
||||
#endif // ENABLE(WORKERS)
|
||||
Index: WebCore/bindings/v8/WorkerScriptController.h
|
||||
===================================================================
|
||||
--- WebCore/bindings/v8/WorkerScriptController.h (revision 145278)
|
||||
+++ WebCore/bindings/v8/WorkerScriptController.h (working copy)
|
||||
@@ -40,6 +40,10 @@
|
||||
#include <wtf/Threading.h>
|
||||
#include <wtf/text/TextPosition.h>
|
||||
|
||||
+namespace WebKit {
|
||||
+class WebWorkerScriptObserver;
|
||||
+}
|
||||
+
|
||||
namespace WebCore {
|
||||
|
||||
class ScriptSourceCode;
|
||||
@@ -95,10 +99,17 @@
|
||||
// Returns a local handle of the context.
|
||||
v8::Local<v8::Context> context() { return v8::Local<v8::Context>::New(m_context.get()); }
|
||||
|
||||
+ // Add or remove an observer. Can only be called while no WebWorkers exist.
|
||||
+ static void addObserver(WebKit::WebWorkerScriptObserver*);
|
||||
+ static void removeObserver(WebKit::WebWorkerScriptObserver*);
|
||||
+
|
||||
private:
|
||||
bool initializeContextIfNeeded();
|
||||
void disposeContext();
|
||||
|
||||
+ void notifyDidCreateWorkerScriptContext();
|
||||
+ void notifyWillReleaseWorkerScriptContext();
|
||||
+
|
||||
WorkerContext* m_workerContext;
|
||||
v8::Isolate* m_isolate;
|
||||
ScopedPersistent<v8::Context> m_context;
|
||||
Index: WebKit/chromium/public/WebWorkerInfo.h
|
||||
===================================================================
|
||||
--- WebKit/chromium/public/WebWorkerInfo.h (revision 145278)
|
||||
+++ WebKit/chromium/public/WebWorkerInfo.h (working copy)
|
||||
@@ -35,9 +35,15 @@
|
||||
|
||||
namespace WebKit {
|
||||
|
||||
+class WebWorkerScriptObserver;
|
||||
+
|
||||
class WebWorkerInfo {
|
||||
public:
|
||||
WEBKIT_EXPORT static unsigned dedicatedWorkerCount();
|
||||
+
|
||||
+ // Add or remove an observer. Can only be called while no WebWorkers exist.
|
||||
+ WEBKIT_EXPORT static void addScriptObserver(WebWorkerScriptObserver*);
|
||||
+ WEBKIT_EXPORT static void removeScriptObserver(WebWorkerScriptObserver*);
|
||||
};
|
||||
|
||||
}
|
||||
Index: WebKit/chromium/public/WebWorkerScriptObserver.h
|
||||
===================================================================
|
||||
--- WebKit/chromium/public/WebWorkerScriptObserver.h (revision 0)
|
||||
+++ WebKit/chromium/public/WebWorkerScriptObserver.h (revision 0)
|
||||
@@ -0,0 +1,25 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2013 Google Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Redistribution and use in source and binary forms, with or without
|
||||
+ * modification, are permitted provided that the following conditions
|
||||
+ * are met:
|
||||
+ * 1. Redistributions of source code must retain the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer.
|
||||
+ * 2. Redistributions in binary form must reproduce the above copyright
|
||||
+ * notice, this list of conditions and the following disclaimer in the
|
||||
+ * documentation and/or other materials provided with the distribution.
|
||||
+ *
|
||||
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
|
||||
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
+ * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
||||
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+ */
|
||||
+
|
||||
+#include "../../../Platform/chromium/public/WebWorkerScriptObserver.h"
|
||||
|
||||
Property changes on: WebKit\chromium\public\WebWorkerScriptObserver.h
|
||||
___________________________________________________________________
|
||||
Added: svn:eol-style
|
||||
+ LF
|
||||
|
||||
Index: WebKit/chromium/src/WebWorkerInfo.cpp
|
||||
===================================================================
|
||||
--- WebKit/chromium/src/WebWorkerInfo.cpp (revision 145278)
|
||||
+++ WebKit/chromium/src/WebWorkerInfo.cpp (working copy)
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "config.h"
|
||||
#include "WebWorkerInfo.h"
|
||||
|
||||
+#include "WorkerScriptController.h"
|
||||
#include "WorkerThread.h"
|
||||
|
||||
namespace WebKit {
|
||||
@@ -40,4 +41,14 @@
|
||||
return WebCore::WorkerThread::workerThreadCount();
|
||||
}
|
||||
|
||||
+void WebWorkerInfo::addScriptObserver(WebWorkerScriptObserver* observer)
|
||||
+{
|
||||
+ WebCore::WorkerScriptController::addObserver(observer);
|
||||
}
|
||||
+
|
||||
+void WebWorkerInfo::removeScriptObserver(WebWorkerScriptObserver* observer)
|
||||
+{
|
||||
+ WebCore::WorkerScriptController::removeObserver(observer);
|
||||
+}
|
||||
+
|
||||
+}
|
Loading…
x
Reference in New Issue
Block a user