Title: [101166] trunk
Revision
101166
Author
[email protected]
Date
2011-11-25 05:39:37 -0800 (Fri, 25 Nov 2011)

Log Message

[Chromium] Web Inspector: get rid of WebDevToolsFrontendClient::sendFrontendLoaded method
https://bugs.webkit.org/show_bug.cgi?id=73126

Source/WebCore:

Notify embedder that front-end is loadded only when all dispatchers, panels and models
have been created so that it could dispatch messages synchronously in the loaded handler.

Reviewed by Pavel Feldman.

* inspector/front-end/inspector.js:

Source/WebKit/chromium:

No need to have a separate client call for this. The front-end can store messages
which arrive before front-end loaded and dispatch them later. This happens in layout
tests only by the way as all other messages should be initiated by the front-end code.

Reviewed by Pavel Feldman.

* public/WebDevToolsFrontendClient.h:
* src/WebDevToolsAgentImpl.cpp:
(WebKit::WebDevToolsAgentImpl::attach):
(WebKit::WebDevToolsAgentImpl::frontendLoaded):
* src/WebDevToolsFrontendImpl.cpp:
(WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
(WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
(WebKit::WebDevToolsFrontendImpl::frontendLoaded):
(WebKit::WebDevToolsFrontendImpl::doDispatchOnInspectorFrontend):
* src/WebDevToolsFrontendImpl.h:

Tools:

No need to have a separate client call for this. The front-end can store messages
which arrive before front-end loaded and dispatch them later. This happens in layout
tests only by the way as all other messages should be initiated by the front-end code.

Reviewed by Pavel Feldman.

* DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
* DumpRenderTree/chromium/DRTDevToolsAgent.h:
* DumpRenderTree/chromium/DRTDevToolsClient.cpp:
* DumpRenderTree/chromium/DRTDevToolsClient.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (101165 => 101166)


--- trunk/Source/WebCore/ChangeLog	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebCore/ChangeLog	2011-11-25 13:39:37 UTC (rev 101166)
@@ -1,5 +1,17 @@
 2011-11-25  Yury Semikhatsky  <[email protected]>
 
+        [Chromium] Web Inspector: get rid of WebDevToolsFrontendClient::sendFrontendLoaded method
+        https://bugs.webkit.org/show_bug.cgi?id=73126
+
+        Notify embedder that front-end is loadded only when all dispatchers, panels and models
+        have been created so that it could dispatch messages synchronously in the loaded handler.
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/front-end/inspector.js:
+
+2011-11-25  Yury Semikhatsky  <[email protected]>
+
         Web Inspector: don't send Console.messagesCleared on front-end connection if console agent is not enabled
         https://bugs.webkit.org/show_bug.cgi?id=73122
 

Modified: trunk/Source/WebCore/inspector/front-end/inspector.js (101165 => 101166)


--- trunk/Source/WebCore/inspector/front-end/inspector.js	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebCore/inspector/front-end/inspector.js	2011-11-25 13:39:37 UTC (rev 101166)
@@ -318,7 +318,6 @@
 WebInspector.doLoadedDone = function()
 {
     WebInspector.WorkerManager.loaded();
-    InspectorFrontendHost.loaded();
 
     WebInspector.installPortStyles();
 
@@ -394,6 +393,7 @@
 
     WebInspector.CSSCompletions.requestCSSNameCompletions();
     WebInspector.WorkerManager.loadCompleted();
+    InspectorFrontendHost.loaded();
 }
 
 WebInspector.addPanel = function(panel)

Modified: trunk/Source/WebKit/chromium/ChangeLog (101165 => 101166)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-25 13:39:37 UTC (rev 101166)
@@ -1,3 +1,25 @@
+2011-11-25  Yury Semikhatsky  <[email protected]>
+
+        [Chromium] Web Inspector: get rid of WebDevToolsFrontendClient::sendFrontendLoaded method
+        https://bugs.webkit.org/show_bug.cgi?id=73126
+
+        No need to have a separate client call for this. The front-end can store messages
+        which arrive before front-end loaded and dispatch them later. This happens in layout
+        tests only by the way as all other messages should be initiated by the front-end code.
+
+        Reviewed by Pavel Feldman.
+
+        * public/WebDevToolsFrontendClient.h:
+        * src/WebDevToolsAgentImpl.cpp:
+        (WebKit::WebDevToolsAgentImpl::attach):
+        (WebKit::WebDevToolsAgentImpl::frontendLoaded):
+        * src/WebDevToolsFrontendImpl.cpp:
+        (WebKit::WebDevToolsFrontendImpl::WebDevToolsFrontendImpl):
+        (WebKit::WebDevToolsFrontendImpl::dispatchOnInspectorFrontend):
+        (WebKit::WebDevToolsFrontendImpl::frontendLoaded):
+        (WebKit::WebDevToolsFrontendImpl::doDispatchOnInspectorFrontend):
+        * src/WebDevToolsFrontendImpl.h:
+
 2011-11-24  Yury Semikhatsky  <[email protected]>
 
         [Chromium] Web Inspector: remove legacy debugger support

Modified: trunk/Source/WebKit/chromium/public/WebDevToolsFrontendClient.h (101165 => 101166)


--- trunk/Source/WebKit/chromium/public/WebDevToolsFrontendClient.h	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebKit/chromium/public/WebDevToolsFrontendClient.h	2011-11-25 13:39:37 UTC (rev 101166)
@@ -41,7 +41,6 @@
 public:
     WebDevToolsFrontendClient() { }
 
-    virtual void sendFrontendLoaded() { }
     virtual void sendMessageToBackend(const WebString&) { }
 
     virtual void activateWindow() { }

Modified: trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp (101165 => 101166)


--- trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp	2011-11-25 13:39:37 UTC (rev 101166)
@@ -195,6 +195,7 @@
         return;
 
     ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client);
+    inspectorController()->connectFrontend();
     m_attached = true;
 }
 
@@ -216,7 +217,6 @@
 
 void WebDevToolsAgentImpl::frontendLoaded()
 {
-    inspectorController()->connectFrontend();
 }
 
 void WebDevToolsAgentImpl::didNavigate()

Modified: trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp (101165 => 101166)


--- trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp	2011-11-25 13:39:37 UTC (rev 101166)
@@ -91,6 +91,7 @@
     : m_webViewImpl(webViewImpl)
     , m_client(client)
     , m_applicationLocale(applicationLocale)
+    , m_loaded(false)
 {
     InspectorController* ic = m_webViewImpl->page()->inspectorController();
     ic->setInspectorFrontendClient(adoptPtr(new InspectorFrontendClientImpl(m_webViewImpl->page(), m_client, this)));
@@ -106,6 +107,22 @@
 
 void WebDevToolsFrontendImpl::dispatchOnInspectorFrontend(const WebString& message)
 {
+    if (m_loaded)
+        doDispatchOnInspectorFrontend(message);
+    else
+        m_pendingMessages.append(message);
+}
+
+void WebDevToolsFrontendImpl::frontendLoaded()
+{
+    m_loaded = true;
+    for (Vector<String>::iterator it = m_pendingMessages.begin(); it != m_pendingMessages.end(); ++it)
+        doDispatchOnInspectorFrontend(*it);
+    m_pendingMessages.clear();
+}
+
+void WebDevToolsFrontendImpl::doDispatchOnInspectorFrontend(const String& message)
+{
     WebFrameImpl* frame = m_webViewImpl->mainFrameImpl();
     v8::HandleScope scope;
     v8::Handle<v8::Context> frameContext = V8Proxy::context(frame->frame());
@@ -126,9 +143,4 @@
     V8Proxy::instrumentedCallFunction(frame->frame()->page(), function, inspectorBackend, args.size(), args.data());
 }
 
-void WebDevToolsFrontendImpl::frontendLoaded()
-{
-    m_client->sendFrontendLoaded();
-}
-
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.h (101165 => 101166)


--- trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.h	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Source/WebKit/chromium/src/WebDevToolsFrontendImpl.h	2011-11-25 13:39:37 UTC (rev 101166)
@@ -33,20 +33,10 @@
 
 #include "PlatformString.h"
 #include "WebDevToolsFrontend.h"
-#include <v8.h>
 #include <wtf/Forward.h>
-#include <wtf/HashMap.h>
 #include <wtf/Noncopyable.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/RefPtr.h>
 #include <wtf/Vector.h>
 
-namespace WebCore {
-class ContextMenuItem;
-class Node;
-class Page;
-}
-
 namespace WebKit {
 
 class WebDevToolsClientDelegate;
@@ -70,9 +60,13 @@
     void frontendLoaded();
 
 private:
+    void doDispatchOnInspectorFrontend(const String& message);
+
     WebKit::WebViewImpl* m_webViewImpl;
     WebKit::WebDevToolsFrontendClient* m_client;
     String m_applicationLocale;
+    bool m_loaded;
+    Vector<String> m_pendingMessages;
 };
 
 } // namespace WebKit

Modified: trunk/Tools/ChangeLog (101165 => 101166)


--- trunk/Tools/ChangeLog	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Tools/ChangeLog	2011-11-25 13:39:37 UTC (rev 101166)
@@ -1,3 +1,19 @@
+2011-11-25  Yury Semikhatsky  <[email protected]>
+
+        [Chromium] Web Inspector: get rid of WebDevToolsFrontendClient::sendFrontendLoaded method
+        https://bugs.webkit.org/show_bug.cgi?id=73126
+
+        No need to have a separate client call for this. The front-end can store messages
+        which arrive before front-end loaded and dispatch them later. This happens in layout
+        tests only by the way as all other messages should be initiated by the front-end code.
+
+        Reviewed by Pavel Feldman.
+
+        * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
+        * DumpRenderTree/chromium/DRTDevToolsAgent.h:
+        * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
+        * DumpRenderTree/chromium/DRTDevToolsClient.h:
+
 2011-11-24  Kentaro Hara  <[email protected]>
 
         Replace subprocess.call() with subprocess.Popen()

Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp (101165 => 101166)


--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.cpp	2011-11-25 13:39:37 UTC (rev 101166)
@@ -87,14 +87,6 @@
         agent->dispatchOnInspectorBackend(args);
 }
 
-void DRTDevToolsAgent::delayedFrontendLoaded()
-{
-    WebDevToolsAgent* agent = webDevToolsAgent();
-    if (agent)
-        agent->frontendLoaded();
-}
-
-
 WebDevToolsAgent* DRTDevToolsAgent::webDevToolsAgent()
 {
     if (!m_webView)
@@ -120,11 +112,6 @@
     m_drtDevToolsClient = 0;
 }
 
-void DRTDevToolsAgent::frontendLoaded()
-{
-    postTask(new DelayedFrontendLoadedTask(this));
-}
-
 bool DRTDevToolsAgent::setJavaScriptProfilingEnabled(bool enabled)
 {
     WebDevToolsAgent* agent = webDevToolsAgent();

Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h (101165 => 101166)


--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsAgent.h	2011-11-25 13:39:37 UTC (rev 101166)
@@ -67,7 +67,6 @@
 
     void attach(DRTDevToolsClient*);
     void detach();
-    void frontendLoaded();
 
     bool evaluateInWebInspector(long callID, const std::string& script);
     bool setJavaScriptProfilingEnabled(bool);
@@ -75,7 +74,6 @@
 
 private:
     void call(const WebKit::WebString& args);
-    void delayedFrontendLoaded();
     WebKit::WebDevToolsAgent* webDevToolsAgent();
 
     class AsyncCallTask: public MethodTask<DRTDevToolsAgent> {
@@ -88,11 +86,6 @@
         WebKit::WebString m_args;
     };
 
-    struct DelayedFrontendLoadedTask: public MethodTask<DRTDevToolsAgent> {
-        DelayedFrontendLoadedTask(DRTDevToolsAgent* object) : MethodTask<DRTDevToolsAgent>(object) { }
-        virtual void runIfValid() { m_object->delayedFrontendLoaded(); }
-    };
-
     TaskList m_taskList;
     DRTDevToolsClient* m_drtDevToolsClient;
     int m_routingID;

Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.cpp (101165 => 101166)


--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.cpp	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.cpp	2011-11-25 13:39:37 UTC (rev 101166)
@@ -64,12 +64,6 @@
     m_taskList.revokeAll();
 }
 
-void DRTDevToolsClient::sendFrontendLoaded()
-{
-    if (m_drtDevToolsAgent)
-        m_drtDevToolsAgent->frontendLoaded();
-}
-
 void DRTDevToolsClient::sendMessageToBackend(const WebString& data)
 {
     if (m_drtDevToolsAgent)

Modified: trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.h (101165 => 101166)


--- trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.h	2011-11-25 12:54:15 UTC (rev 101165)
+++ trunk/Tools/DumpRenderTree/chromium/DRTDevToolsClient.h	2011-11-25 13:39:37 UTC (rev 101166)
@@ -54,7 +54,6 @@
     void reset();
 
     // WebDevToolsFrontendClient implementation
-    virtual void sendFrontendLoaded();
     virtual void sendMessageToBackend(const WebKit::WebString&);
 
     virtual void activateWindow();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to