Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1928)

Unified Diff: Source/web/WebDevToolsFrontendImpl.cpp

Issue 900543003: DevTools: do not abuse inspector controller for the front-end side plumbing. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed initializer. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/web/WebDevToolsFrontendImpl.h ('k') | Source/web/WebLocalFrameImpl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/web/WebDevToolsFrontendImpl.h ('k') | Source/web/WebLocalFrameImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698