summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 01:03:02 +0000
committerjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-12 01:03:02 +0000
commitc489b2702caeb985677c0d1ff2a7a1678bbb41a8 (patch)
tree7490706f8f82d8fd3379541f41b9091b0c1d563f
parent7435b830a7b6d2a43f94afbcca57bbc102db2ef3 (diff)
downloadchromium_src-c489b2702caeb985677c0d1ff2a7a1678bbb41a8.zip
chromium_src-c489b2702caeb985677c0d1ff2a7a1678bbb41a8.tar.gz
chromium_src-c489b2702caeb985677c0d1ff2a7a1678bbb41a8.tar.bz2
Fix issue with getting self of WorkerContext.
Review URL: http://codereview.chromium.org/40205 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11504 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/port/bindings/v8/V8WorkerContextCustom.cpp2
-rw-r--r--webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp5
2 files changed, 4 insertions, 3 deletions
diff --git a/webkit/port/bindings/v8/V8WorkerContextCustom.cpp b/webkit/port/bindings/v8/V8WorkerContextCustom.cpp
index 3134ba2..14d7b80 100644
--- a/webkit/port/bindings/v8/V8WorkerContextCustom.cpp
+++ b/webkit/port/bindings/v8/V8WorkerContextCustom.cpp
@@ -88,7 +88,7 @@ ACCESSOR_GETTER(WorkerContextSelf) {
INC_STATS(L"DOM.WorkerContext.self._get");
WorkerContext* imp = V8Proxy::ToNativeObject<WorkerContext>(
V8ClassIndex::WORKERCONTEXT, info.Holder());
- return V8Proxy::ToV8Object(V8ClassIndex::WORKERCONTEXT, imp);
+ return WorkerContextExecutionProxy::WorkerContextToV8Object(imp);
}
ACCESSOR_GETTER(WorkerContextOnmessage) {
diff --git a/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp b/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp
index f4ab728..fd0c160 100644
--- a/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp
+++ b/webkit/port/bindings/v8/WorkerContextExecutionProxy.cpp
@@ -167,13 +167,14 @@ v8::Handle<v8::Value> WorkerContextExecutionProxy::ToV8Object(
V8ClassIndex::V8WrapperType type, void* imp) {
if (!imp) return v8::Null();
+ if (type == V8ClassIndex::WORKERCONTEXT)
+ return WorkerContextToV8Object(static_cast<WorkerContext*>(imp));
+
// Non DOM node
v8::Persistent<v8::Object> result = GetDOMObjectMap().get(imp);
if (result.IsEmpty()) {
v8::Local<v8::Object> v8obj = InstantiateV8Object(type, type, imp);
if (!v8obj.IsEmpty()) {
- // Go through big switch statement, it has some duplications
- // that were handled by code above (such as CSSVALUE, CSSRULE, etc).
switch (type) {
case V8ClassIndex::WORKERLOCATION:
static_cast<WorkerLocation*>(imp)->ref();