WebDevToolsFrontendImpl.cpp [plain text]
#include "config.h"
#include "WebDevToolsFrontendImpl.h"
#include "BoundObject.h"
#include "ContextMenuController.h"
#include "ContextMenuItem.h"
#include "DOMWindow.h"
#include "Document.h"
#include "Event.h"
#include "Frame.h"
#include "InspectorController.h"
#include "InspectorFrontendClientImpl.h"
#include "InspectorFrontendHost.h"
#include "Node.h"
#include "Page.h"
#include "Pasteboard.h"
#include "PlatformString.h"
#include "SecurityOrigin.h"
#include "Settings.h"
#include "V8Binding.h"
#include "V8DOMWrapper.h"
#include "V8InspectorFrontendHost.h"
#include "V8MouseEvent.h"
#include "V8Node.h"
#include "V8Proxy.h"
#include "V8Utilities.h"
#include "WebDevToolsFrontendClient.h"
#include "WebFrameImpl.h"
#include "WebScriptSource.h"
#include "WebViewImpl.h"
#include <wtf/OwnPtr.h>
#include <wtf/Vector.h>
using namespace WebCore;
namespace WebKit {
static v8::Local<v8::String> ToV8String(const String& s)
{
if (s.isNull())
return v8::Local<v8::String>();
return v8::String::New(reinterpret_cast<const uint16_t*>(s.characters()), s.length());
}
WebDevToolsFrontend* WebDevToolsFrontend::create(
WebView* view,
WebDevToolsFrontendClient* client,
const WebString& applicationLocale)
{
return new WebDevToolsFrontendImpl(
static_cast<WebViewImpl*>(view),
client,
applicationLocale);
}
WebDevToolsFrontendImpl::WebDevToolsFrontendImpl(
WebViewImpl* webViewImpl,
WebDevToolsFrontendClient* client,
const String& applicationLocale)
: m_webViewImpl(webViewImpl)
, m_client(client)
, m_applicationLocale(applicationLocale)
{
InspectorController* ic = m_webViewImpl->page()->inspectorController();
ic->setInspectorFrontendClient(adoptPtr(new InspectorFrontendClientImpl(m_webViewImpl->page(), m_client, this)));
m_webViewImpl->page()->setGroupName(String());
}
WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl()
{
}
void WebDevToolsFrontendImpl::dispatchOnInspectorFrontend(const WebString& message)
{
WebFrameImpl* frame = m_webViewImpl->mainFrameImpl();
v8::HandleScope scope;
v8::Handle<v8::Context> frameContext = V8Proxy::context(frame->frame());
v8::Context::Scope contextScope(frameContext);
v8::Handle<v8::Value> inspectorBackendValue = frameContext->Global()->Get(v8::String::New("InspectorBackend"));
if (!inspectorBackendValue->IsObject())
return;
v8::Handle<v8::Object> inspectorBackend = v8::Handle<v8::Object>::Cast(inspectorBackendValue);
v8::Handle<v8::Value> dispatchFunction = inspectorBackend->Get(v8::String::New("dispatch"));
if (!dispatchFunction->IsFunction())
return;
v8::Handle<v8::Function> function = v8::Handle<v8::Function>::Cast(dispatchFunction);
Vector< v8::Handle<v8::Value> > args;
args.append(ToV8String(message));
v8::TryCatch tryCatch;
tryCatch.SetVerbose(true);
function->Call(inspectorBackend, args.size(), args.data());
}
void WebDevToolsFrontendImpl::frontendLoaded()
{
m_client->sendFrontendLoaded();
}
}