summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/chromium/src/WebBindings.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-25 19:08:45 +0100
committerSteve Block <steveblock@google.com>2011-06-08 13:51:31 +0100
commit2bde8e466a4451c7319e3a072d118917957d6554 (patch)
tree28f4a1b869a513e565c7760d0e6a06e7cf1fe95a /Source/WebKit/chromium/src/WebBindings.cpp
parent6939c99b71d9372d14a0c74a772108052e8c48c8 (diff)
downloadexternal_webkit-2bde8e466a4451c7319e3a072d118917957d6554.zip
external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.gz
external_webkit-2bde8e466a4451c7319e3a072d118917957d6554.tar.bz2
Merge WebKit at r82507: Initial merge by git
Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e
Diffstat (limited to 'Source/WebKit/chromium/src/WebBindings.cpp')
-rw-r--r--Source/WebKit/chromium/src/WebBindings.cpp209
1 files changed, 68 insertions, 141 deletions
diff --git a/Source/WebKit/chromium/src/WebBindings.cpp b/Source/WebKit/chromium/src/WebBindings.cpp
index 0882e38..4012d1c 100644
--- a/Source/WebKit/chromium/src/WebBindings.cpp
+++ b/Source/WebKit/chromium/src/WebBindings.cpp
@@ -35,25 +35,18 @@
#include "npruntime_priv.h"
#if USE(V8)
-#include "ChromiumDataObject.h"
-#include "ClipboardChromium.h"
-#include "EventNames.h"
-#include "MouseEvent.h"
#include "NPV8Object.h" // for PrivateIdentifier
#include "Range.h"
#include "V8BindingState.h"
#include "V8DOMWrapper.h"
#include "V8Element.h"
-#include "V8Event.h"
-#include "V8Helpers.h"
-#include "V8HiddenPropertyName.h"
#include "V8NPUtils.h"
+#include "V8Node.h"
#include "V8Proxy.h"
#include "V8Range.h"
#elif USE(JSC)
#include "bridge/c/c_utility.h"
#endif
-#include "WebDragData.h"
#include "WebElement.h"
#include "WebRange.h"
@@ -65,9 +58,9 @@ using namespace WebCore;
namespace WebKit {
-bool WebBindings::construct(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant* result)
+bool WebBindings::construct(NPP npp, NPObject* object, const NPVariant* args, uint32_t argCount, NPVariant* result)
{
- return _NPN_Construct(npp, npobj, args, argCount, result);
+ return _NPN_Construct(npp, object, args, argCount, result);
}
NPObject* WebBindings::createObject(NPP npp, NPClass* npClass)
@@ -75,19 +68,19 @@ NPObject* WebBindings::createObject(NPP npp, NPClass* npClass)
return _NPN_CreateObject(npp, npClass);
}
-bool WebBindings::enumerate(NPP id, NPObject* obj, NPIdentifier** identifier, uint32_t* val)
+bool WebBindings::enumerate(NPP npp, NPObject* object, NPIdentifier** identifier, uint32_t* identifierCount)
{
- return _NPN_Enumerate(id, obj, identifier, val);
+ return _NPN_Enumerate(npp, object, identifier, identifierCount);
}
-bool WebBindings::evaluate(NPP npp, NPObject* npObject, NPString* npScript, NPVariant* result)
+bool WebBindings::evaluate(NPP npp, NPObject* object, NPString* script, NPVariant* result)
{
- return _NPN_Evaluate(npp, npObject, npScript, result);
+ return _NPN_Evaluate(npp, object, script, result);
}
-bool WebBindings::evaluateHelper(NPP npp, bool popups_allowed, NPObject* npobj, NPString* npscript, NPVariant* result)
+bool WebBindings::evaluateHelper(NPP npp, bool popupsAllowed, NPObject* object, NPString* script, NPVariant* result)
{
- return _NPN_EvaluateHelper(npp, popups_allowed, npobj, npscript, result);
+ return _NPN_EvaluateHelper(npp, popupsAllowed, object, script, result);
}
NPIdentifier WebBindings::getIntIdentifier(int32_t number)
@@ -95,9 +88,9 @@ NPIdentifier WebBindings::getIntIdentifier(int32_t number)
return _NPN_GetIntIdentifier(number);
}
-bool WebBindings::getProperty(NPP npp, NPObject* obj, NPIdentifier propertyName, NPVariant *result)
+bool WebBindings::getProperty(NPP npp, NPObject* object, NPIdentifier property, NPVariant* result)
{
- return _NPN_GetProperty(npp, obj, propertyName, result);
+ return _NPN_GetProperty(npp, object, property, result);
}
NPIdentifier WebBindings::getStringIdentifier(const NPUTF8* string)
@@ -110,14 +103,14 @@ void WebBindings::getStringIdentifiers(const NPUTF8** names, int32_t nameCount,
_NPN_GetStringIdentifiers(names, nameCount, identifiers);
}
-bool WebBindings::hasMethod(NPP npp, NPObject* npObject, NPIdentifier methodName)
+bool WebBindings::hasMethod(NPP npp, NPObject* object, NPIdentifier method)
{
- return _NPN_HasMethod(npp, npObject, methodName);
+ return _NPN_HasMethod(npp, object, method);
}
-bool WebBindings::hasProperty(NPP npp, NPObject* npObject, NPIdentifier propertyName)
+bool WebBindings::hasProperty(NPP npp, NPObject* object, NPIdentifier property)
{
- return _NPN_HasProperty(npp, npObject, propertyName);
+ return _NPN_HasProperty(npp, object, property);
}
bool WebBindings::identifierIsString(NPIdentifier identifier)
@@ -139,19 +132,19 @@ void WebBindings::initializeVariantWithStringCopy(NPVariant* variant, const NPSt
#endif
}
-bool WebBindings::invoke(NPP npp, NPObject* npObject, NPIdentifier methodName, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
+bool WebBindings::invoke(NPP npp, NPObject* object, NPIdentifier method, const NPVariant* args, uint32_t argCount, NPVariant* result)
{
- return _NPN_Invoke(npp, npObject, methodName, arguments, argumentCount, result);
+ return _NPN_Invoke(npp, object, method, args, argCount, result);
}
-bool WebBindings::invokeDefault(NPP id, NPObject* obj, const NPVariant* args, uint32_t count, NPVariant* result)
+bool WebBindings::invokeDefault(NPP npp, NPObject* object, const NPVariant* args, uint32_t argCount, NPVariant* result)
{
- return _NPN_InvokeDefault(id, obj, args, count, result);
+ return _NPN_InvokeDefault(npp, object, args, argCount, result);
}
-void WebBindings::releaseObject(NPObject* npObject)
+void WebBindings::releaseObject(NPObject* object)
{
- return _NPN_ReleaseObject(npObject);
+ return _NPN_ReleaseObject(object);
}
void WebBindings::releaseVariantValue(NPVariant* variant)
@@ -159,30 +152,30 @@ void WebBindings::releaseVariantValue(NPVariant* variant)
_NPN_ReleaseVariantValue(variant);
}
-bool WebBindings::removeProperty(NPP id, NPObject* object, NPIdentifier identifier)
+bool WebBindings::removeProperty(NPP npp, NPObject* object, NPIdentifier identifier)
{
- return _NPN_RemoveProperty(id, object, identifier);
+ return _NPN_RemoveProperty(npp, object, identifier);
}
-NPObject* WebBindings::retainObject(NPObject* npObject)
+NPObject* WebBindings::retainObject(NPObject* object)
{
- return _NPN_RetainObject(npObject);
+ return _NPN_RetainObject(object);
}
-void WebBindings::setException(NPObject* obj, const NPUTF8* message)
+void WebBindings::setException(NPObject* object, const NPUTF8* message)
{
- _NPN_SetException(obj, message);
+ _NPN_SetException(object, message);
}
-bool WebBindings::setProperty(NPP id, NPObject* obj, NPIdentifier identifier, const NPVariant* variant)
+bool WebBindings::setProperty(NPP npp, NPObject* object, NPIdentifier identifier, const NPVariant* value)
{
- return _NPN_SetProperty(id, obj, identifier, variant);
+ return _NPN_SetProperty(npp, object, identifier, value);
}
-void WebBindings::unregisterObject(NPObject* npObject)
+void WebBindings::unregisterObject(NPObject* object)
{
#if USE(V8)
- _NPN_UnregisterObject(npObject);
+ _NPN_UnregisterObject(object);
#endif
}
@@ -193,116 +186,46 @@ NPUTF8* WebBindings::utf8FromIdentifier(NPIdentifier identifier)
void WebBindings::extractIdentifierData(const NPIdentifier& identifier, const NPUTF8*& string, int32_t& number, bool& isString)
{
- PrivateIdentifier* priv = static_cast<PrivateIdentifier*>(identifier);
- if (!priv) {
+ PrivateIdentifier* data = static_cast<PrivateIdentifier*>(identifier);
+ if (!data) {
isString = false;
number = 0;
return;
}
- isString = priv->isString;
+ isString = data->isString;
if (isString)
- string = priv->value.string;
+ string = data->value.string;
else
- number = priv->value.number;
+ number = data->value.number;
}
#if USE(V8)
-static v8::Local<v8::Value> getEvent(const v8::Handle<v8::Context>& context)
+static bool getRangeImpl(NPObject* object, WebRange* webRange)
{
- return context->Global()->GetHiddenValue(V8HiddenPropertyName::event());
-}
-
-static bool getDragDataImpl(NPObject* npobj, int* eventId, WebDragData* data)
-{
- if (!npobj)
- return false;
- if (npobj->_class != npScriptObjectClass)
- return false;
-
- v8::HandleScope handleScope;
- v8::Handle<v8::Context> context = v8::Context::GetEntered();
- if (context.IsEmpty())
- return false;
-
- // Get the current WebCore event.
- v8::Handle<v8::Value> currentEvent(getEvent(context));
- Event* event = V8Event::toNative(v8::Handle<v8::Object>::Cast(currentEvent));
- if (!event)
- return false;
-
- // Check that the given npobj is that event.
- V8NPObject* object = reinterpret_cast<V8NPObject*>(npobj);
- Event* given = V8Event::toNative(object->v8Object);
- if (given != event)
- return false;
-
- // Check the execution frames are same origin.
- V8Proxy* current = V8Proxy::retrieve(V8Proxy::retrieveFrameForCurrentContext());
- Frame* frame = V8Proxy::retrieveFrame(context);
- if (!current || !V8BindingSecurity::canAccessFrame(V8BindingState::Only(), frame, false))
- return false;
-
- const EventNames& names(eventNames());
- const AtomicString& eventType(event->type());
-
- enum DragTargetMouseEventId {
- DragEnterId = 1, DragOverId = 2, DragLeaveId = 3, DropId = 4
- };
-
- // The event type should be a drag event.
- if (eventType == names.dragenterEvent)
- *eventId = DragEnterId;
- else if (eventType == names.dragoverEvent)
- *eventId = DragOverId;
- else if (eventType == names.dragleaveEvent)
- *eventId = DragLeaveId;
- else if (eventType == names.dropEvent)
- *eventId = DropId;
- else
- return false;
-
- // Drag events are mouse events and should have a clipboard.
- MouseEvent* me = static_cast<MouseEvent*>(event);
- Clipboard* clipboard = me->clipboard();
- if (!clipboard)
+ if (!object || (object->_class != npScriptObjectClass))
return false;
- // And that clipboard should be accessible by WebKit policy.
- ClipboardChromium* chrome = static_cast<ClipboardChromium*>(clipboard);
- HashSet<String> accessible(chrome->types());
- if (accessible.isEmpty())
- return false;
-
- RefPtr<ChromiumDataObject> dataObject(chrome->dataObject());
- if (dataObject && data)
- *data = WebDragData(dataObject);
-
- return dataObject;
-}
-
-static bool getRangeImpl(NPObject* npobj, WebRange* range)
-{
- V8NPObject* v8npobject = reinterpret_cast<V8NPObject*>(npobj);
- v8::Handle<v8::Object> v8object(v8npobject->v8Object);
- if (!V8Range::info.equals(V8DOMWrapper::domWrapperType(v8object)))
+ V8NPObject* v8NPObject = reinterpret_cast<V8NPObject*>(object);
+ v8::Handle<v8::Object> v8Object(v8NPObject->v8Object);
+ if (!V8Range::info.equals(V8DOMWrapper::domWrapperType(v8Object)))
return false;
- Range* native = V8Range::toNative(v8object);
+ Range* native = V8Range::toNative(v8Object);
if (!native)
return false;
- *range = WebRange(native);
+ *webRange = WebRange(native);
return true;
}
-static bool getElementImpl(NPObject* npObj, WebElement* webElement)
+static bool getElementImpl(NPObject* object, WebElement* webElement)
{
- if (!npObj || (npObj->_class != npScriptObjectClass))
+ if (!object || (object->_class != npScriptObjectClass))
return false;
- V8NPObject* v8NPObject = reinterpret_cast<V8NPObject*>(npObj);
+ V8NPObject* v8NPObject = reinterpret_cast<V8NPObject*>(object);
v8::Handle<v8::Object> v8Object(v8NPObject->v8Object);
Element* native = V8Element::toNative(v8Object);
if (!native)
@@ -316,7 +239,7 @@ static NPObject* makeIntArrayImpl(const WebVector<int>& data)
{
v8::HandleScope handleScope;
v8::Handle<v8::Array> result = v8::Array::New(data.size());
- for (size_t i = 0; i < data.size(); i++)
+ for (size_t i = 0; i < data.size(); ++i)
result->Set(i, v8::Number::New(data[i]));
WebCore::DOMWindow* window = WebCore::V8Proxy::retrieveWindow(WebCore::V8Proxy::currentContext());
@@ -334,28 +257,22 @@ static NPObject* makeStringArrayImpl(const WebVector<WebString>& data)
return npCreateV8ScriptObject(0, result, window);
}
-#endif
-
-bool WebBindings::getDragData(NPObject* event, int* eventId, WebDragData* data)
+static NPObject* makeNodeImpl(WebNode data)
{
-#if USE(V8)
- return getDragDataImpl(event, eventId, data);
-#else
- // Not supported on other ports (JSC, etc).
- return false;
-#endif
+ v8::HandleScope handleScope;
+ if (data.isNull())
+ return 0;
+ v8::Handle<v8::Object> result = V8Node::wrap(data.unwrap<Node>());
+ WebCore::DOMWindow* window = WebCore::V8Proxy::retrieveWindow(WebCore::V8Proxy::currentContext());
+ return npCreateV8ScriptObject(0, result, window);
}
-bool WebBindings::isDragEvent(NPObject* event)
-{
- int eventId;
- return getDragData(event, &eventId, 0);
-}
+#endif
-bool WebBindings::getRange(NPObject* range, WebRange* webrange)
+bool WebBindings::getRange(NPObject* range, WebRange* webRange)
{
#if USE(V8)
- return getRangeImpl(range, webrange);
+ return getRangeImpl(range, webRange);
#else
// Not supported on other ports (JSC, etc).
return false;
@@ -372,7 +289,7 @@ bool WebBindings::getElement(NPObject* element, WebElement* webElement)
#endif
}
-NPObject* WebBindings::makeIntArray(const WebVector<int> & data)
+NPObject* WebBindings::makeIntArray(const WebVector<int>& data)
{
#if USE(V8)
return makeIntArrayImpl(data);
@@ -392,6 +309,16 @@ NPObject* WebBindings::makeStringArray(const WebVector<WebString>& data)
#endif
}
+NPObject* WebBindings::makeNode(const WebNode& data)
+{
+#if USE(V8)
+ return makeNodeImpl(data);
+#else
+ // Not supported on other ports (JSC, etc.).
+ return 0;
+#endif
+}
+
void WebBindings::pushExceptionHandler(ExceptionHandler handler, void* data)
{
WebCore::pushExceptionHandler(handler, data);