summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp')
-rw-r--r--WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp b/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
index b823034..7f4ccf7 100644
--- a/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
@@ -35,12 +35,65 @@
#include "InspectorFrontendHost.h"
#include "V8Binding.h"
+#include "V8MouseEvent.h"
#include "V8Proxy.h"
namespace WebCore {
+v8::Handle<v8::Value> V8InspectorFrontendHost::platformCallback(const v8::Arguments&)
+{
+#if defined(OS_MACOSX)
+ return v8String("mac");
+#elif defined(OS_LINUX)
+ return v8String("linux");
+#elif defined(OS_WIN)
+ return v8String("windows");
+#else
+ return v8String("unknown");
+#endif
+}
+
+v8::Handle<v8::Value> V8InspectorFrontendHost::portCallback(const v8::Arguments&)
+{
+ return v8::Undefined();
+}
+
v8::Handle<v8::Value> V8InspectorFrontendHost::showContextMenuCallback(const v8::Arguments& args)
{
+ if (args.Length() < 2)
+ return v8::Undefined();
+
+ v8::Local<v8::Object> eventWrapper = v8::Local<v8::Object>::Cast(args[0]);
+ if (!V8MouseEvent::info.equals(V8DOMWrapper::domWrapperType(eventWrapper)))
+ return v8::Undefined();
+
+ Event* event = V8Event::toNative(eventWrapper);
+ if (!args[1]->IsArray())
+ return v8::Undefined();
+
+ v8::Local<v8::Array> array = v8::Local<v8::Array>::Cast(args[1]);
+ Vector<ContextMenuItem*> items;
+
+ for (size_t i = 0; i < array->Length(); ++i) {
+ v8::Local<v8::Object> item = v8::Local<v8::Object>::Cast(array->Get(v8::Integer::New(i)));
+ v8::Local<v8::Value> label = item->Get(v8::String::New("label"));
+ v8::Local<v8::Value> id = item->Get(v8::String::New("id"));
+ if (label->IsUndefined() || id->IsUndefined()) {
+ items.append(new ContextMenuItem(SeparatorType,
+ ContextMenuItemTagNoAction,
+ String()));
+ } else {
+ ContextMenuAction typedId = static_cast<ContextMenuAction>(
+ ContextMenuItemBaseCustomTag + id->ToInt32()->Value());
+ items.append(new ContextMenuItem(ActionType,
+ typedId,
+ toWebCoreStringWithNullCheck(label)));
+ }
+ }
+
+ InspectorFrontendHost* frontendHost = V8InspectorFrontendHost::toNative(args.Holder());
+ frontendHost->showContextMenu(event, items);
+
return v8::Undefined();
}