Title: [146851] trunk/Source/WebCore
Revision
146851
Author
morr...@google.com
Date
2013-03-25 23:35:06 -0700 (Mon, 25 Mar 2013)

Log Message

Custom Elements Refactoring: The name V8CustomElement is confusing.
https://bugs.webkit.org/show_bug.cgi?id=113165

Reviewed by Kent Tamura.

This change moves functions from V8CustomElement to CustomElementHelpers and
removes V8CustomElement. V8CustomElement is just a heritage of old design
and no longer makes sense.

No new tests. No behavior change.

* WebCore.gypi:
* bindings/v8/CustomElementHelpers.cpp:
(WebCore::CustomElementHelpers::createWrapper):
(WebCore):
* bindings/v8/CustomElementHelpers.h:
(CustomElementHelpers):
(WebCore::CustomElementHelpers::wrap):
(WebCore):
(WebCore::CustomElementHelpers::constructorOf):
* bindings/v8/V8CustomElement.cpp: Removed.
* bindings/v8/V8CustomElement.h: Removed.
* bindings/v8/custom/V8CustomElementConstructorCustom.cpp:
(WebCore::V8CustomElementConstructor::callAsFunctionCallback):
* dom/make_names.pl:
(printWrapperFactoryCppFile):

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (146850 => 146851)


--- trunk/Source/WebCore/ChangeLog	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/ChangeLog	2013-03-26 06:35:06 UTC (rev 146851)
@@ -1,3 +1,32 @@
+2013-03-25  Hajime Morrita  <morr...@google.com>
+
+        Custom Elements Refactoring: The name V8CustomElement is confusing.
+        https://bugs.webkit.org/show_bug.cgi?id=113165
+
+        Reviewed by Kent Tamura.
+
+        This change moves functions from V8CustomElement to CustomElementHelpers and
+        removes V8CustomElement. V8CustomElement is just a heritage of old design
+        and no longer makes sense.
+
+        No new tests. No behavior change.
+
+        * WebCore.gypi:
+        * bindings/v8/CustomElementHelpers.cpp:
+        (WebCore::CustomElementHelpers::createWrapper):
+        (WebCore):
+        * bindings/v8/CustomElementHelpers.h:
+        (CustomElementHelpers):
+        (WebCore::CustomElementHelpers::wrap):
+        (WebCore):
+        (WebCore::CustomElementHelpers::constructorOf):
+        * bindings/v8/V8CustomElement.cpp: Removed.
+        * bindings/v8/V8CustomElement.h: Removed.
+        * bindings/v8/custom/V8CustomElementConstructorCustom.cpp:
+        (WebCore::V8CustomElementConstructor::callAsFunctionCallback):
+        * dom/make_names.pl:
+        (printWrapperFactoryCppFile):
+
 2013-03-25  Eugene Klyuchnikov  <eus...@chromium.org>
 
         Web Inspector: [Timeline] Records sidebar is clipped.

Modified: trunk/Source/WebCore/WebCore.gypi (146850 => 146851)


--- trunk/Source/WebCore/WebCore.gypi	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/WebCore.gypi	2013-03-26 06:35:06 UTC (rev 146851)
@@ -1372,8 +1372,6 @@
             'bindings/v8/V8Callback.h',
             'bindings/v8/V8Collection.cpp',
             'bindings/v8/V8Collection.h',
-            'bindings/v8/V8CustomElement.cpp',
-            'bindings/v8/V8CustomElement.h',
             'bindings/v8/V8DOMConfiguration.cpp',
             'bindings/v8/V8DOMConfiguration.h',
             'bindings/v8/V8DOMActivityLogger.h',

Modified: trunk/Source/WebCore/bindings/v8/CustomElementHelpers.cpp (146850 => 146851)


--- trunk/Source/WebCore/bindings/v8/CustomElementHelpers.cpp	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/bindings/v8/CustomElementHelpers.cpp	2013-03-26 06:35:06 UTC (rev 146851)
@@ -43,6 +43,38 @@
 
 #if ENABLE(CUSTOM_ELEMENTS)
 
+v8::Handle<v8::Object> CustomElementHelpers::createWrapper(PassRefPtr<Element> impl, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor> constructor, v8::Isolate* isolate)
+{
+    ASSERT(impl);
+
+    // The constructor and registered lifecycle callbacks should be visible only from main world.
+    // FIXME: This shouldn't be needed once each custom element has its own FunctionTemplate
+    // https://bugs.webkit.org/show_bug.cgi?id=108138
+    if (!CustomElementHelpers::isFeatureAllowed(creationContext->CreationContext())) {
+        v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext, &V8HTMLElement::info, impl.get(), isolate);
+        if (!wrapper.IsEmpty())
+            V8DOMWrapper::associateObjectWithWrapper(impl, &V8HTMLElement::info, wrapper, isolate, WrapperConfiguration::Dependent);
+        return wrapper;
+    }
+
+    v8::Handle<v8::Value> constructorValue = WebCore::toV8(constructor.get(), creationContext, isolate);
+    if (constructorValue.IsEmpty() || !constructorValue->IsObject())
+        return v8::Handle<v8::Object>();
+    v8::Handle<v8::Object> constructorWapper = v8::Handle<v8::Object>::Cast(constructorValue);
+    v8::Handle<v8::Object> prototype = v8::Handle<v8::Object>::Cast(constructorWapper->Get(v8::String::NewSymbol("prototype")));
+    WrapperTypeInfo* typeInfo = CustomElementHelpers::findWrapperType(prototype);
+    if (!typeInfo)
+        return v8::Handle<v8::Object>();
+
+    v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext, typeInfo, impl.get(), isolate);
+    if (wrapper.IsEmpty())
+        return v8::Handle<v8::Object>();
+
+    wrapper->SetPrototype(prototype);
+    V8DOMWrapper::associateObjectWithWrapper(impl, typeInfo, wrapper, isolate, WrapperConfiguration::Dependent);
+    return wrapper;
+}
+
 bool CustomElementHelpers::initializeConstructorWrapper(CustomElementConstructor* constructor, const ScriptValue& prototype, ScriptState* state)
 {
     ASSERT(isFeatureAllowed(state));

Modified: trunk/Source/WebCore/bindings/v8/CustomElementHelpers.h (146850 => 146851)


--- trunk/Source/WebCore/bindings/v8/CustomElementHelpers.h	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/bindings/v8/CustomElementHelpers.h	2013-03-26 06:35:06 UTC (rev 146851)
@@ -31,9 +31,17 @@
 #ifndef CustomElementHelpers_h
 #define CustomElementHelpers_h
 
+#include "CustomElementConstructor.h"
+#include "CustomElementRegistry.h"
+#include "Document.h"
 #include "ExceptionCode.h"
 #include "ScriptValue.h"
+#include "V8Binding.h"
+#include "V8DOMWrapper.h"
+#include "V8HTMLElement.h"
+#include "V8HTMLUnknownElement.h"
 #include <wtf/Forward.h>
+#include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
@@ -58,10 +66,33 @@
 
     static void invokeReadyCallbacksIfNeeded(ScriptExecutionContext*, const Vector<CustomElementInvocation>&);
 
+    //
+    // You can just use toV8(Node*) to get correct wrapper objects, even for custom elements.
+    // Then generated ElementWrapperFactories call V8CustomElement::wrap() with proper CustomElementConstructor instances
+    // accordingly.
+    //
+    static v8::Handle<v8::Object> wrap(Element*, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor>, v8::Isolate*);
+    static PassRefPtr<CustomElementConstructor> constructorOf(Element*);
+
 private:
     static void invokeReadyCallbackIfNeeded(Element*, v8::Handle<v8::Context>);
+    static v8::Handle<v8::Object> createWrapper(PassRefPtr<Element>, v8::Handle<v8::Object>, PassRefPtr<CustomElementConstructor>, v8::Isolate*);
 };
 
+inline v8::Handle<v8::Object> CustomElementHelpers::wrap(Element* impl, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor> constructor, v8::Isolate* isolate)
+{
+    ASSERT(impl);
+    ASSERT(DOMDataStore::getWrapper(impl, isolate).IsEmpty());
+    return CustomElementHelpers::createWrapper(impl, creationContext, constructor, isolate);
+}
+
+inline PassRefPtr<CustomElementConstructor> CustomElementHelpers::constructorOf(Element* element)
+{
+    if (CustomElementRegistry* registry = element->document()->registry())
+        return registry->findFor(element);
+    return 0;
+}
+
 #endif // ENABLE(CUSTOM_ELEMENTS)
 
 } // namespace WebCore

Deleted: trunk/Source/WebCore/bindings/v8/V8CustomElement.cpp (146850 => 146851)


--- trunk/Source/WebCore/bindings/v8/V8CustomElement.cpp	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/bindings/v8/V8CustomElement.cpp	2013-03-26 06:35:06 UTC (rev 146851)
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER OR 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 "config.h"
-
-#if ENABLE(CUSTOM_ELEMENTS)
-
-#include "V8CustomElement.h"
-
-#include "CustomElementHelpers.h"
-#include "CustomElementRegistry.h"
-#include "Element.h"
-#include "V8CustomElementConstructor.h"
-#include "V8HTMLUnknownElement.h"
-
-namespace WebCore {
-
-v8::Handle<v8::Object> V8CustomElement::createWrapper(PassRefPtr<Element> impl, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor> constructor, v8::Isolate* isolate)
-{
-    ASSERT(impl);
-
-    // The constructor and registered lifecycle callbacks should be visible only from main world.
-    // FIXME: This shouldn't be needed once each custom element has its own FunctionTemplate
-    // https://bugs.webkit.org/show_bug.cgi?id=108138
-    if (!CustomElementHelpers::isFeatureAllowed(creationContext->CreationContext())) {
-        v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext, &V8HTMLElement::info, impl.get(), isolate);
-        if (!wrapper.IsEmpty())
-            V8DOMWrapper::associateObjectWithWrapper(impl, &V8HTMLElement::info, wrapper, isolate, WrapperConfiguration::Dependent);
-        return wrapper;
-    }
-
-    v8::Handle<v8::Value> constructorValue = WebCore::toV8(constructor.get(), creationContext, isolate);
-    if (constructorValue.IsEmpty() || !constructorValue->IsObject())
-        return v8::Handle<v8::Object>();
-    v8::Handle<v8::Object> constructorWapper = v8::Handle<v8::Object>::Cast(constructorValue);
-    v8::Handle<v8::Object> prototype = v8::Handle<v8::Object>::Cast(constructorWapper->Get(v8::String::NewSymbol("prototype")));
-    WrapperTypeInfo* typeInfo = CustomElementHelpers::findWrapperType(prototype);
-    if (!typeInfo)
-        return v8::Handle<v8::Object>();
-
-    v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext, typeInfo, impl.get(), isolate);
-    if (wrapper.IsEmpty())
-        return v8::Handle<v8::Object>();
-
-    wrapper->SetPrototype(prototype);
-    V8DOMWrapper::associateObjectWithWrapper(impl, typeInfo, wrapper, isolate, WrapperConfiguration::Dependent);
-    return wrapper;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(CUSTOM_ELEMENTS)

Deleted: trunk/Source/WebCore/bindings/v8/V8CustomElement.h (146850 => 146851)


--- trunk/Source/WebCore/bindings/v8/V8CustomElement.h	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/bindings/v8/V8CustomElement.h	2013-03-26 06:35:06 UTC (rev 146851)
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER OR 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 V8CustomElement_h
-#define V8CustomElement_h
-
-#include "CustomElementConstructor.h"
-#include "CustomElementRegistry.h"
-#include "Document.h"
-#include "V8Binding.h"
-#include "V8DOMWrapper.h"
-#include "V8HTMLElement.h"
-#include "V8HTMLUnknownElement.h"
-#include <wtf/PassRefPtr.h>
-
-namespace WebCore {
-
-class Element;
-class CustomElementConstructor;
-
-#if ENABLE(CUSTOM_ELEMENTS)
-
-class V8CustomElement {
-public:
-    //
-    // You can just use toV8(Node*) to get correct wrapper objects, even for custom elements.
-    // Then generated ElementWrapperFactories call V8CustomElement::wrap() with proper CustomElementConstructor instances
-    // accordingly.
-    //
-    static v8::Handle<v8::Object> wrap(Element*, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor>, v8::Isolate*);
-    static PassRefPtr<CustomElementConstructor> constructorOf(Element*);
-
-private:
-    static v8::Handle<v8::Object> createWrapper(PassRefPtr<Element>, v8::Handle<v8::Object>, PassRefPtr<CustomElementConstructor>, v8::Isolate*);
-};
-
-inline v8::Handle<v8::Object> V8CustomElement::wrap(Element* impl, v8::Handle<v8::Object> creationContext, PassRefPtr<CustomElementConstructor> constructor, v8::Isolate* isolate)
-{
-    ASSERT(impl);
-    ASSERT(DOMDataStore::getWrapper(impl, isolate).IsEmpty());
-    return V8CustomElement::createWrapper(impl, creationContext, constructor, isolate);
-}
-
-inline PassRefPtr<CustomElementConstructor> V8CustomElement::constructorOf(Element* element)
-{
-    if (CustomElementRegistry* registry = element->document()->registry())
-        return registry->findFor(element);
-    return 0;
-}
-
-#endif // ENABLE(CUSTOM_ELEMENTS)
-
-} // namespace WebCore
-
-#endif // V8CustomElement_h

Modified: trunk/Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp (146850 => 146851)


--- trunk/Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/bindings/v8/custom/V8CustomElementConstructorCustom.cpp	2013-03-26 06:35:06 UTC (rev 146851)
@@ -32,8 +32,8 @@
 #include "V8CustomElementConstructor.h"
 
 #include "CustomElementConstructor.h"
+#include "CustomElementHelpers.h"
 #include "V8Binding.h"
-#include "V8CustomElement.h"
 
 namespace WebCore {
 
@@ -48,7 +48,7 @@
     RefPtr<Element> element = impl->createElement();
     if (!element)
         return v8Undefined();
-    return V8CustomElement::wrap(element.get(), args.Holder(), impl, args.GetIsolate());
+    return CustomElementHelpers::wrap(element.get(), args.Holder(), impl, args.GetIsolate());
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/make_names.pl (146850 => 146851)


--- trunk/Source/WebCore/dom/make_names.pl	2013-03-26 06:07:52 UTC (rev 146850)
+++ trunk/Source/WebCore/dom/make_names.pl	2013-03-26 06:35:06 UTC (rev 146851)
@@ -1219,7 +1219,7 @@
 #include "V8$parameters{namespace}Element.h"
 
 #if ENABLE(CUSTOM_ELEMENTS)
-#include "V8CustomElement.h"
+#include "CustomElementHelpers.h"
 #endif
 
 #include <v8.h>
@@ -1296,8 +1296,8 @@
     if ($wrapperFactoryType eq "V8") {
         print F <<END
 #if ENABLE(CUSTOM_ELEMENTS)
-    if (PassRefPtr<CustomElementConstructor> constructor = V8CustomElement::constructorOf(element))
-        return V8CustomElement::wrap(element, creationContext, constructor, isolate);
+    if (PassRefPtr<CustomElementConstructor> constructor = CustomElementHelpers::constructorOf(element))
+        return CustomElementHelpers::wrap(element, creationContext, constructor, isolate);
 #endif
 END
 ;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to