Index: Source/web/WebDevToolsFrontendImpl.cpp |
diff --git a/Source/web/WebDevToolsFrontendImpl.cpp b/Source/web/WebDevToolsFrontendImpl.cpp |
index 6dcb3ab6cbd5e50869315d6f995652277b06a889..44dcaee0d6183ebd56c796fe5ab4040d99fa1a8a 100644 |
--- a/Source/web/WebDevToolsFrontendImpl.cpp |
+++ b/Source/web/WebDevToolsFrontendImpl.cpp |
@@ -35,10 +35,10 @@ |
#include "bindings/core/v8/V8DevToolsHost.h" |
#include "core/frame/LocalFrame.h" |
#include "core/inspector/DevToolsHost.h" |
-#include "core/inspector/InspectorController.h" |
-#include "core/page/Page.h" |
#include "public/platform/WebString.h" |
#include "public/web/WebDevToolsFrontendClient.h" |
+#include "public/web/WebSecurityOrigin.h" |
+#include "web/WebLocalFrameImpl.h" |
#include "web/WebViewImpl.h" |
namespace blink { |
@@ -48,16 +48,24 @@ WebDevToolsFrontend* WebDevToolsFrontend::create( |
WebDevToolsFrontendClient* client, |
const WebString& applicationLocale) |
{ |
- return new WebDevToolsFrontendImpl(toWebViewImpl(view), client); |
+ return new WebDevToolsFrontendImpl(toWebLocalFrameImpl(view->mainFrame()), client); |
+} |
+ |
+WebDevToolsFrontend* WebDevToolsFrontend::create( |
+ WebLocalFrame* frame, |
+ WebDevToolsFrontendClient* client, |
+ const WebString& applicationLocale) |
+{ |
+ return new WebDevToolsFrontendImpl(toWebLocalFrameImpl(frame), client); |
} |
WebDevToolsFrontendImpl::WebDevToolsFrontendImpl( |
- WebViewImpl* webViewImpl, |
+ WebLocalFrameImpl* webFrame, |
WebDevToolsFrontendClient* client) |
- : m_webViewImpl(webViewImpl) |
+ : m_webFrame(webFrame) |
, m_client(client) |
{ |
- m_webViewImpl->page()->inspectorController().setInspectorFrontendClient(this); |
+ m_webFrame->setDevToolsFrontend(this); |
} |
WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl() |
@@ -65,29 +73,28 @@ WebDevToolsFrontendImpl::~WebDevToolsFrontendImpl() |
ASSERT(!m_devtoolsHost); |
} |
-void WebDevToolsFrontendImpl::dispose() |
+void WebDevToolsFrontendImpl::didClearWindowObject(WebLocalFrameImpl* frame) |
{ |
- if (m_devtoolsHost) { |
- m_devtoolsHost->disconnectClient(); |
- m_devtoolsHost = nullptr; |
+ if (m_webFrame == frame) { |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
+ ScriptState* scriptState = ScriptState::forMainWorld(m_webFrame->frame()); |
+ ScriptState::Scope scope(scriptState); |
+ |
+ if (m_devtoolsHost) |
+ m_devtoolsHost->disconnectClient(); |
+ m_devtoolsHost = DevToolsHost::create(this, m_webFrame->frame()); |
+ v8::Handle<v8::Object> global = scriptState->context()->Global(); |
+ v8::Handle<v8::Value> devtoolsHostObj = toV8(m_devtoolsHost.get(), global, scriptState->isolate()); |
+ global->Set(v8::String::NewFromUtf8(isolate, "DevToolsHost"), devtoolsHostObj); |
} |
- m_client = 0; |
-} |
-void WebDevToolsFrontendImpl::windowObjectCleared() |
-{ |
- v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
- Page* page = m_webViewImpl->page(); |
- ASSERT(page->mainFrame()); |
- ScriptState* scriptState = ScriptState::forMainWorld(page->deprecatedLocalMainFrame()); |
- ScriptState::Scope scope(scriptState); |
- |
- if (m_devtoolsHost) |
- m_devtoolsHost->disconnectClient(); |
- m_devtoolsHost = DevToolsHost::create(this, page); |
- v8::Handle<v8::Object> global = scriptState->context()->Global(); |
- v8::Handle<v8::Value> devtoolsHostObj = toV8(m_devtoolsHost.get(), global, scriptState->isolate()); |
- global->Set(v8::String::NewFromUtf8(isolate, "DevToolsHost"), devtoolsHostObj); |
+ if (m_injectedScriptForOrigin.isEmpty()) |
+ return; |
+ |
+ String origin = frame->securityOrigin().toString(); |
+ String script = m_injectedScriptForOrigin.get(origin); |
+ if (!script.isEmpty()) |
+ frame->frame()->script().executeScriptInMainWorld(script + "()"); |
} |
void WebDevToolsFrontendImpl::sendMessageToBackend(const String& message) |
@@ -107,4 +114,14 @@ bool WebDevToolsFrontendImpl::isUnderTest() |
return m_client ? m_client->isUnderTest() : false; |
} |
+void WebDevToolsFrontendImpl::showContextMenu(LocalFrame* targetFrame, float x, float y, PassRefPtrWillBeRawPtr<ContextMenuProvider> menuProvider) |
+{ |
+ WebLocalFrameImpl::fromFrame(targetFrame)->viewImpl()->showContextMenuAtPoint(x, y, menuProvider); |
+} |
+ |
+void WebDevToolsFrontendImpl::setInjectedScriptForOrigin(const String& origin, const String& source) |
+{ |
+ m_injectedScriptForOrigin.set(origin, source); |
+} |
+ |
} // namespace blink |