[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
yurys at chromium.org
yurys at chromium.org
Wed Dec 22 11:52:51 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 59863305811e2be46c79e088a9b9192884cb458d
Author: yurys at chromium.org <yurys at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Aug 10 13:23:00 2010 +0000
2010-08-10 Yury Semikhatsky <yurys at chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: get rid of utility context
https://bugs.webkit.org/show_bug.cgi?id=43787
* public/WebDevToolsAgentClient.h:
* src/DebuggerAgentImpl.cpp:
* src/DebuggerAgentImpl.h:
* src/WebDevToolsAgentImpl.cpp:
(WebKit::):
(WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
(WebKit::WebDevToolsAgentImpl::attach):
(WebKit::WebDevToolsAgentImpl::detach):
(WebKit::WebDevToolsAgentImpl::frontendLoaded):
(WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):
(WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
* src/WebDevToolsAgentImpl.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65069 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 7e5f82c..1486694 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -2,6 +2,26 @@
Reviewed by Pavel Feldman.
+ Web Inspector: get rid of utility context
+ https://bugs.webkit.org/show_bug.cgi?id=43787
+
+ * public/WebDevToolsAgentClient.h:
+ * src/DebuggerAgentImpl.cpp:
+ * src/DebuggerAgentImpl.h:
+ * src/WebDevToolsAgentImpl.cpp:
+ (WebKit::):
+ (WebKit::WebDevToolsAgentImpl::~WebDevToolsAgentImpl):
+ (WebKit::WebDevToolsAgentImpl::attach):
+ (WebKit::WebDevToolsAgentImpl::detach):
+ (WebKit::WebDevToolsAgentImpl::frontendLoaded):
+ (WebKit::WebDevToolsAgentImpl::setRuntimeFeatureEnabled):
+ (WebKit::WebDevToolsAgentImpl::setApuAgentEnabled):
+ * src/WebDevToolsAgentImpl.h:
+
+2010-08-10 Yury Semikhatsky <yurys at chromium.org>
+
+ Reviewed by Pavel Feldman.
+
Web Inspector, Chromium: reloading of inspected page hits assert in InspectorController::enableDebuggerFromFrontend()
https://bugs.webkit.org/show_bug.cgi?id=43780
diff --git a/WebKit/chromium/public/WebDevToolsAgentClient.h b/WebKit/chromium/public/WebDevToolsAgentClient.h
index 08bdd58..ec013ac 100644
--- a/WebKit/chromium/public/WebDevToolsAgentClient.h
+++ b/WebKit/chromium/public/WebDevToolsAgentClient.h
@@ -54,7 +54,6 @@ public:
virtual void runtimeFeatureStateChanged(const WebString& feature, bool enabled) { }
virtual WebCString injectedScriptSource() { return WebCString(); }
- virtual WebCString injectedScriptDispatcherSource() { return WebCString(); }
virtual WebCString debuggerScriptSource() { return WebCString(); }
class WebKitClientMessageLoop {
diff --git a/WebKit/chromium/src/DebuggerAgentImpl.cpp b/WebKit/chromium/src/DebuggerAgentImpl.cpp
index 52e87e7..46c6e7c 100644
--- a/WebKit/chromium/src/DebuggerAgentImpl.cpp
+++ b/WebKit/chromium/src/DebuggerAgentImpl.cpp
@@ -32,22 +32,10 @@
#include "DebuggerAgentImpl.h"
#include "DebuggerAgentManager.h"
-#include "Document.h"
-#include "Frame.h"
-#include "Page.h"
-#include "ScriptDebugServer.h"
-#include "V8Binding.h"
#include "WebDevToolsAgentClient.h"
#include "WebDevToolsAgentImpl.h"
#include "WebViewImpl.h"
-#include <wtf/HashSet.h>
-#include <wtf/RefPtr.h>
-#include <wtf/Vector.h>
-using WebCore::DOMWindow;
-using WebCore::Document;
-using WebCore::Frame;
-using WebCore::Page;
using WTF::String;
namespace WebKit {
@@ -75,58 +63,6 @@ void DebuggerAgentImpl::debuggerOutput(const String& command)
m_webdevtoolsAgent->forceRepaint();
}
-String DebuggerAgentImpl::executeUtilityFunction(
- v8::Handle<v8::Context> context,
- int callId,
- const char* object,
- const String &functionName,
- const String& jsonArgs,
- bool async,
- String* exception)
-{
- v8::HandleScope scope;
- ASSERT(!context.IsEmpty());
- if (context.IsEmpty()) {
- *exception = "No window context.";
- return "";
- }
- v8::Context::Scope contextScope(context);
-
- DebuggerAgentManager::UtilityContextScope utilityScope;
-
- v8::Handle<v8::Object> dispatchObject = v8::Handle<v8::Object>::Cast(
- context->Global()->Get(v8::String::New(object)));
-
- v8::Handle<v8::Value> dispatchFunction = dispatchObject->Get(v8::String::New("dispatch"));
- ASSERT(dispatchFunction->IsFunction());
- v8::Handle<v8::Function> function = v8::Handle<v8::Function>::Cast(dispatchFunction);
-
- v8::Handle<v8::String> functionNameWrapper = v8::Handle<v8::String>(
- v8::String::New(functionName.utf8().data()));
- v8::Handle<v8::String> jsonArgsWrapper = v8::Handle<v8::String>(
- v8::String::New(jsonArgs.utf8().data()));
- v8::Handle<v8::Number> callIdWrapper = v8::Handle<v8::Number>(
- v8::Number::New(async ? callId : 0));
-
- v8::Handle<v8::Value> args[] = {
- functionNameWrapper,
- jsonArgsWrapper,
- callIdWrapper
- };
-
- v8::TryCatch tryCatch;
- v8::Handle<v8::Value> resObj = function->Call(context->Global(), 3, args);
- if (tryCatch.HasCaught()) {
- v8::Local<v8::Message> message = tryCatch.Message();
- if (message.IsEmpty())
- *exception = "Unknown exception";
- else
- *exception = WebCore::toWebCoreString(message->Get());
- return "";
- }
- return WebCore::toWebCoreStringWithNullCheck(resObj);
-}
-
WebCore::Page* DebuggerAgentImpl::page()
{
return m_webViewImpl->page();
diff --git a/WebKit/chromium/src/DebuggerAgentImpl.h b/WebKit/chromium/src/DebuggerAgentImpl.h
index 699d6de..a8fcc4e 100644
--- a/WebKit/chromium/src/DebuggerAgentImpl.h
+++ b/WebKit/chromium/src/DebuggerAgentImpl.h
@@ -31,15 +31,9 @@
#ifndef DebuggerAgentImpl_h
#define DebuggerAgentImpl_h
-#include <v8.h>
#include <wtf/Forward.h>
-#include <wtf/HashSet.h>
-#include <wtf/Noncopyable.h>
namespace WebCore {
-class Document;
-class Frame;
-class Node;
class Page;
}
@@ -62,19 +56,6 @@ public:
bool autoContinueOnException() { return m_autoContinueOnException; }
- // Executes function with the given name in the utility context. Passes node
- // and json args as parameters. Note that the function called must be
- // implemented in the inject_dispatch.js file.
- WTF::String executeUtilityFunction(
- v8::Handle<v8::Context> context,
- int callId,
- const char* object,
- const WTF::String& functionName,
- const WTF::String& jsonArgs,
- bool async,
- WTF::String* exception);
-
-
WebCore::Page* page();
WebDevToolsAgentImpl* webdevtoolsAgent() { return m_webdevtoolsAgent; }
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
index 7a825c8..4de5624 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
@@ -31,17 +31,11 @@
#include "config.h"
#include "WebDevToolsAgentImpl.h"
-#include "BoundObject.h"
#include "DebuggerAgentImpl.h"
#include "DebuggerAgentManager.h"
-#include "Document.h"
-#include "EventListener.h"
#include "InjectedScriptHost.h"
-#include "InspectorBackend.h"
#include "InspectorBackendDispatcher.h"
#include "InspectorController.h"
-#include "InspectorResource.h"
-#include "Node.h"
#include "Page.h"
#include "PageGroup.h"
#include "PlatformString.h"
@@ -49,8 +43,6 @@
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "ScriptDebugServer.h"
-#include "ScriptState.h"
-#include "ScriptValue.h"
#include "V8Binding.h"
#include "V8Proxy.h"
#include "V8Utilities.h"
@@ -68,21 +60,15 @@
#include <wtf/Noncopyable.h>
#include <wtf/OwnPtr.h>
-using WebCore::Document;
using WebCore::DocumentLoader;
using WebCore::FrameLoader;
using WebCore::InjectedScriptHost;
-using WebCore::InspectorBackend;
using WebCore::InspectorController;
-using WebCore::InspectorResource;
using WebCore::Node;
using WebCore::Page;
using WebCore::ResourceError;
using WebCore::ResourceRequest;
using WebCore::ResourceResponse;
-using WebCore::SafeAllocation;
-using WebCore::ScriptState;
-using WebCore::ScriptValue;
using WTF::String;
using WebCore::V8DOMWrapper;
using WebCore::V8Proxy;
@@ -91,13 +77,6 @@ namespace WebKit {
namespace {
-void InspectorBackendWeakReferenceCallback(v8::Persistent<v8::Value> object, void* parameter)
-{
- InspectorBackend* backend = static_cast<InspectorBackend*>(parameter);
- backend->deref();
- object.Dispose();
-}
-
static const char kFrontendConnectedFeatureName[] = "frontend-connected";
static const char kResourceTrackingFeatureName[] = "resource-tracking";
static const char kTimelineFeatureName[] = "timeline-profiler";
@@ -207,15 +186,6 @@ WebDevToolsAgentImpl::~WebDevToolsAgentImpl()
{
DebuggerAgentManager::onWebViewClosed(m_webViewImpl);
ClientMessageLoopAdapter::inspectedViewClosed(m_webViewImpl);
- disposeUtilityContext();
-}
-
-void WebDevToolsAgentImpl::disposeUtilityContext()
-{
- if (!m_utilityContext.IsEmpty()) {
- m_utilityContext.Dispose();
- m_utilityContext.Clear();
- }
}
void WebDevToolsAgentImpl::attach()
@@ -228,32 +198,32 @@ void WebDevToolsAgentImpl::attach()
m_debuggerAgentImpl.set(
new DebuggerAgentImpl(m_webViewImpl, this, m_client));
- createInspectorFrontendProxy();
-
- // Allow controller to send messages to the frontend.
- InspectorController* ic = inspectorController();
+ WebCString debuggerScriptJs = m_client->debuggerScriptSource();
+ WebCore::ScriptDebugServer::shared().setDebuggerScriptSource(
+ WTF::String(debuggerScriptJs.data(), debuggerScriptJs.length()));
- { // TODO(yurys): the source should have already been pushed by the frontend.
- v8::HandleScope scope;
- v8::Context::Scope contextScope(m_utilityContext);
- v8::Handle<v8::Value> constructorValue = m_utilityContext->Global()->Get(
- v8::String::New("injectedScriptConstructor"));
- if (constructorValue->IsFunction()) {
- String source = WebCore::toWebCoreString(constructorValue);
- ic->injectedScriptHost()->setInjectedScriptSource("(" + source + ")");
- }
+ // TODO(yurys): the source should have already been pushed by the frontend.
+ WebCString injectedScriptJs = m_client->injectedScriptSource();
+ String injectedScriptSource = String::fromUTF8(injectedScriptJs.data(), injectedScriptJs.length());
+ const char* varDefinition = "var injectedScriptConstructor = ";
+ int pos = injectedScriptSource.find(varDefinition);
+ if (pos == -1) {
+ ASSERT_NOT_REACHED();
+ return;
}
+ pos += String(varDefinition).length();
+ injectedScriptSource = injectedScriptSource.substring(pos);
+ inspectorController()->injectedScriptHost()->setInjectedScriptSource(injectedScriptSource);
m_attached = true;
}
void WebDevToolsAgentImpl::detach()
{
// Prevent controller from sending messages to the frontend.
- InspectorController* ic = m_webViewImpl->page()->inspectorController();
+ InspectorController* ic = inspectorController();
ic->disconnectFrontend();
ic->hideHighlight();
ic->close();
- disposeUtilityContext();
m_debuggerAgentImpl.set(0);
m_attached = false;
m_apuAgentEnabled = false;
@@ -261,8 +231,7 @@ void WebDevToolsAgentImpl::detach()
void WebDevToolsAgentImpl::frontendLoaded()
{
- InspectorController* ic = inspectorController();
- ic->connectFrontend();
+ inspectorController()->connectFrontend();
m_client->runtimeFeatureStateChanged(kFrontendConnectedFeatureName, true);
}
@@ -299,7 +268,7 @@ void WebDevToolsAgentImpl::setRuntimeFeatureEnabled(const WebString& feature, bo
else if (feature == kTimelineFeatureName)
setTimelineProfilingEnabled(enabled);
else if (feature == kResourceTrackingFeatureName) {
- InspectorController* ic = m_webViewImpl->page()->inspectorController();
+ InspectorController* ic = inspectorController();
if (enabled)
ic->enableResourceTracking(false /* not sticky */, false /* no reload */);
else
@@ -308,45 +277,10 @@ void WebDevToolsAgentImpl::setRuntimeFeatureEnabled(const WebString& feature, bo
frontendLoaded();
}
-void WebDevToolsAgentImpl::compileUtilityScripts()
-{
- v8::HandleScope handleScope;
- v8::Context::Scope contextScope(m_utilityContext);
- // Inject javascript into the context.
- WebCString injectedScriptJs = m_client->injectedScriptSource();
- v8::Script::Compile(v8::String::New(
- injectedScriptJs.data(),
- injectedScriptJs.length()))->Run();
- WebCString injectDispatchJs = m_client->injectedScriptDispatcherSource();
- v8::Script::Compile(v8::String::New(
- injectDispatchJs.data(),
- injectDispatchJs.length()))->Run();
-}
-
-void WebDevToolsAgentImpl::initDevToolsAgentHost()
-{
- BoundObject devtoolsAgentHost(m_utilityContext, this, "DevToolsAgentHost");
- devtoolsAgentHost.addProtoFunction(
- "dispatch",
- WebDevToolsAgentImpl::jsDispatchOnClient);
- devtoolsAgentHost.build();
-}
-
-void WebDevToolsAgentImpl::createInspectorFrontendProxy()
-{
- disposeUtilityContext();
- m_utilityContext = v8::Context::New();
- compileUtilityScripts();
- initDevToolsAgentHost();
- WebCString debuggerScriptJs = m_client->debuggerScriptSource();
- WebCore::ScriptDebugServer::shared().setDebuggerScriptSource(
- WTF::String(debuggerScriptJs.data(), debuggerScriptJs.length()));
-}
-
void WebDevToolsAgentImpl::setApuAgentEnabled(bool enabled)
{
m_apuAgentEnabled = enabled;
- InspectorController* ic = m_webViewImpl->page()->inspectorController();
+ InspectorController* ic = inspectorController();
if (enabled) {
m_resourceTrackingWasEnabled = ic->resourceTrackingEnabled();
ic->startTimelineProfiler();
@@ -367,32 +301,6 @@ void WebDevToolsAgentImpl::setApuAgentEnabled(bool enabled)
enabled);
}
-// static
-v8::Handle<v8::Value> WebDevToolsAgentImpl::jsDispatchOnClient(const v8::Arguments& args)
-{
- v8::TryCatch exceptionCatcher;
- String message = WebCore::toWebCoreStringWithNullCheck(args[0]);
- if (message.isEmpty() || exceptionCatcher.HasCaught())
- return v8::Undefined();
-
- WebDevToolsAgentImpl* agent = static_cast<WebDevToolsAgentImpl*>(v8::External::Cast(*args.Data())->Value());
-
- if (!agent->m_apuAgentEnabled) {
- agent->m_client->sendMessageToInspectorFrontend(message);
- return v8::Undefined();
- }
-
- String method = WebCore::toWebCoreStringWithNullCheck(args[1]);
- if (method.isEmpty() || exceptionCatcher.HasCaught())
- return v8::Undefined();
-
- if (method != "updateResource" && method != "addResource")
- return v8::Undefined();
-
- agent->m_client->sendDispatchToAPU(message);
- return v8::Undefined();
-}
-
WebCore::InspectorController* WebDevToolsAgentImpl::inspectorController()
{
if (Page* page = m_webViewImpl->page())
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.h b/WebKit/chromium/src/WebDevToolsAgentImpl.h
index 911316e..a0d2647 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.h
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.h
@@ -104,13 +104,6 @@ public:
int hostId() { return m_hostId; }
private:
- static v8::Handle<v8::Value> jsDispatchOnClient(const v8::Arguments& args);
-
- void disposeUtilityContext();
-
- void compileUtilityScripts();
- void initDevToolsAgentHost();
- void createInspectorFrontendProxy();
void setApuAgentEnabled(bool enabled);
WebCore::InspectorController* inspectorController();
@@ -122,9 +115,6 @@ private:
bool m_apuAgentEnabled;
bool m_resourceTrackingWasEnabled;
bool m_attached;
- // TODO(pfeldman): This should not be needed once GC styles issue is fixed
- // for matching rules.
- v8::Persistent<v8::Context> m_utilityContext;
};
} // namespace WebKit
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list