2009-06-02 Albert J. Wong <ajwong@chromium.org>
authorjianli@chromium.org <jianli@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Jun 2009 21:09:14 +0000 (21:09 +0000)
committerjianli@chromium.org <jianli@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 2 Jun 2009 21:09:14 +0000 (21:09 +0000)
        Reviewed by Dimitri Glazkov.

        https://bugs.webkit.org/show_bug.cgi?id=25595
        Upstream v8_utility.h functions into V8Utilities.h.  This patch has
        some transitional code to make upstreaming easier.  This code will
        be deleted in a few days.

        * bindings/v8/ScriptFunctionCall.cpp:
        (WebCore::ScriptFunctionCall::construct): NewInstance -> newInstance.
        * bindings/v8/V8Utilities.h:
        (WebCore::AllowAllocation::AllowAllocation): Function added.
        (WebCore::AllowAllocation::~AllowAllocation): Function added.
        (WebCore::SafeAllocation::NewInstance): Function added.
        * bindings/v8/WorkerContextExecutionProxy.cpp:
        (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
        NewInstance -> newInstance.
        (WebCore::WorkerContextExecutionProxy::toV8): NewInstance ->
        newInstance.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@44366 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bindings/v8/ScriptFunctionCall.cpp
WebCore/bindings/v8/V8Utilities.h
WebCore/bindings/v8/WorkerContextExecutionProxy.cpp

index d4c6626..2324b4b 100644 (file)
@@ -1,3 +1,24 @@
+2009-06-02  Albert J. Wong  <ajwong@chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
+        https://bugs.webkit.org/show_bug.cgi?id=25595
+        Upstream v8_utility.h functions into V8Utilities.h.  This patch has
+        some transitional code to make upstreaming easier.  This code will
+        be deleted in a few days.
+
+        * bindings/v8/ScriptFunctionCall.cpp:
+        (WebCore::ScriptFunctionCall::construct): NewInstance -> newInstance.
+        * bindings/v8/V8Utilities.h:
+        (WebCore::AllowAllocation::AllowAllocation): Function added.
+        (WebCore::AllowAllocation::~AllowAllocation): Function added.
+        (WebCore::SafeAllocation::NewInstance): Function added.
+        * bindings/v8/WorkerContextExecutionProxy.cpp:
+        (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+        NewInstance -> newInstance.
+        (WebCore::WorkerContextExecutionProxy::toV8): NewInstance ->
+        newInstance.
+
 2009-06-02  Dan Bernstein  <mitz@apple.com>
 
         Reviewed by John Sullivan.
index 58badbf..d2f7a52 100644 (file)
@@ -156,7 +156,7 @@ ScriptObject ScriptFunctionCall::construct(bool& hadException, bool reportExcept
     for (size_t i = 0; i < m_arguments.size(); ++i)
         args[i] = m_arguments[i].v8Value();
 
-    v8::Local<v8::Object> result = SafeAllocation::NewInstance(constructor, m_arguments.size(), args.get());
+    v8::Local<v8::Object> result = SafeAllocation::newInstance(constructor, m_arguments.size(), args.get());
     if (!scope.success()) {
         hadException = true;
         return ScriptObject();
index 7fe7e45..5769910 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009 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
 #ifndef V8Utilities_h
 #define V8Utilities_h
 
+// FIXME: Remove once chromium dependencies on v8_utility.h are removed.
+#define V8UTILITIES_DEFINED 1
+
 #include <v8.h>
 
 namespace WebCore {
 
-class Frame;
-class KURL;
-class String;
+    class Frame;
+    class KURL;
+    class String;
+
+    // Use an array to hold dependents. It works like a ref-counted scheme. A value can be added more than once to the DOM object.
+    void createHiddenDependency(v8::Local<v8::Object>, v8::Local<v8::Value>, int cacheIndex);
+    void removeHiddenDependency(v8::Local<v8::Object>, v8::Local<v8::Value>, int cacheIndex);
+
+    bool processingUserGesture();
+    bool shouldAllowNavigation(Frame*);
+    KURL completeURL(const String& relativeURL);
+    void navigateIfAllowed(Frame*, const KURL&, bool lockHistory, bool lockBackForwardList);
+
+    class AllowAllocation {
+    public:
+        inline AllowAllocation()
+        {
+            m_previous = m_current;
+            m_current = true;
+        }
+
+        inline ~AllowAllocation()
+        {
+            m_current = m_previous;
+        }
+
+        static bool m_current;
+
+    private:
+        bool m_previous;
+    };
+
+    class SafeAllocation {
+     public:
+      static inline v8::Local<v8::Object> newInstance(v8::Handle<v8::Function>);
+      static inline v8::Local<v8::Object> newInstance(v8::Handle<v8::ObjectTemplate>);
+      static inline v8::Local<v8::Object> newInstance(v8::Handle<v8::Function>, int argc, v8::Handle<v8::Value> argv[]);
+
+      // FIXME: These NewInstance functions are here to ease upstreaming. Remove along with V8UTILITIES_DEFINED once chromium dependencies on v8_utility.h are removed.
+      static inline v8::Local<v8::Object> NewInstance(v8::Handle<v8::Function>);
+      static inline v8::Local<v8::Object> NewInstance(v8::Handle<v8::ObjectTemplate>);
+      static inline v8::Local<v8::Object> NewInstance(v8::Handle<v8::Function>, int argc, v8::Handle<v8::Value> argv[]);
+    };
+
+    v8::Local<v8::Object> SafeAllocation::newInstance(v8::Handle<v8::Function> function)
+    {
+        if (function.IsEmpty())
+            return v8::Local<v8::Object>();
+        AllowAllocation allow;
+        return function->NewInstance();
+    }
+
+    v8::Local<v8::Object> SafeAllocation::newInstance(v8::Handle<v8::ObjectTemplate> objectTemplate)
+    {
+        if (objectTemplate.IsEmpty())
+            return v8::Local<v8::Object>();
+        AllowAllocation allow;
+        return objectTemplate->NewInstance();
+    }
+
+    v8::Local<v8::Object> SafeAllocation::newInstance(v8::Handle<v8::Function> function, int argc, v8::Handle<v8::Value> argv[])
+    {
+        if (function.IsEmpty())
+            return v8::Local<v8::Object>();
+        AllowAllocation allow;
+        return function->NewInstance(argc, argv);
+    }
+
+    // FIXME: These NewInstance functions are here to ease upstreaming. Remove along with V8UTILITIES_DEFINED once chromium dependencies on v8_utility.h are removed.
+    v8::Local<v8::Object> SafeAllocation::NewInstance(v8::Handle<v8::Function> function)
+    {
+        return newInstance(function);
+    }
 
-// Use an array to hold dependents. It works like a ref-counted scheme.
-// A value can be added more than once to the DOM object.
-void createHiddenDependency(v8::Local<v8::Object>, v8::Local<v8::Value>, int cacheIndex);
-void removeHiddenDependency(v8::Local<v8::Object>, v8::Local<v8::Value>, int cacheIndex);
+    v8::Local<v8::Object> SafeAllocation::NewInstance(v8::Handle<v8::ObjectTemplate> objectTemplate)
+    {
+        return newInstance(objectTemplate);
+    }
 
-bool processingUserGesture();
-bool shouldAllowNavigation(Frame* frame);
-KURL completeURL(const String& relativeURL);
-void navigateIfAllowed(Frame* frame, const KURL& url, bool lockHistory, bool lockBackForwardList);
+    v8::Local<v8::Object> SafeAllocation::NewInstance(v8::Handle<v8::Function> function, int argc, v8::Handle<v8::Value> argv[])
+    {
+        return newInstance(function, argc, argv);
+    }
 
 } // namespace WebCore
 
index 5947a1e..7af9536 100644 (file)
@@ -173,7 +173,7 @@ void WorkerContextExecutionProxy::initContextIfNeeded()
 
     // Create a new JS object and use it as the prototype for the shadow global object.
     v8::Handle<v8::Function> workerContextConstructor = GetConstructor(V8ClassIndex::WORKERCONTEXT);
-    v8::Local<v8::Object> jsWorkerContext = SafeAllocation::NewInstance(workerContextConstructor);
+    v8::Local<v8::Object> jsWorkerContext = SafeAllocation::newInstance(workerContextConstructor);
     // Bail out if allocation failed.
     if (jsWorkerContext.IsEmpty()) {
         dispose();
@@ -318,7 +318,7 @@ v8::Local<v8::Object> WorkerContextExecutionProxy::toV8(V8ClassIndex::V8WrapperT
     else
         function = V8Proxy::GetTemplate(descType)->GetFunction();
 
-    v8::Local<v8::Object> instance = SafeAllocation::NewInstance(function);
+    v8::Local<v8::Object> instance = SafeAllocation::newInstance(function);
     if (!instance.IsEmpty()) {
         // Avoid setting the DOM wrapper for failed allocations.
         V8Proxy::SetDOMWrapper(instance, V8ClassIndex::ToInt(cptrType), impl);