[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