Changeset 61113 in webkit


Ignore:
Timestamp:
Jun 14, 2010 5:32:43 AM (14 years ago)
Author:
loislo@chromium.org
Message:

2010-06-14 Ilya Tikhonovsky <loislo@chromium.org>

Reviewed by Pavel Feldman.

WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
data from inspected page to WebInspector as JSON string via http. The native
serialization to JSON string is supported by InspectorValue's classes. This patch
has the implementation of sendMessageToFrontend function. WebKit version of it still
uses ScriptFunctionCall and will be switched to another transport a little bit later.
https://bugs.webkit.org/show_bug.cgi?id=40134

  • inspector/InspectorClient.h:
  • inspector/InspectorController.cpp: (WebCore::InspectorController::connectFrontend): (WebCore::InspectorController::disconnectFrontend):
  • inspector/InspectorController.h:
  • inspector/InspectorFrontend.cpp: (WebCore::InspectorFrontend::InspectorFrontend):
  • inspector/InspectorFrontend.h:
  • inspector/InspectorFrontendClientLocal.cpp: (WebCore::InspectorFrontendClientLocal::frontendLoaded):
  • inspector/InspectorValues.cpp: (WebCore::InspectorObject::writeJSON):
  • inspector/front-end/inspector.js: (WebInspector.dispatchMessageToFrontend):
  • loader/EmptyClients.h: (WebCore::EmptyInspectorClient::sendMessageToFrontend):
Location:
trunk
Files:
37 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r61112 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * inspector/InspectorClient.h:
     13        * inspector/InspectorController.cpp:
     14        (WebCore::InspectorController::connectFrontend):
     15        (WebCore::InspectorController::disconnectFrontend):
     16        * inspector/InspectorController.h:
     17        * inspector/InspectorFrontend.cpp:
     18        (WebCore::InspectorFrontend::InspectorFrontend):
     19        * inspector/InspectorFrontend.h:
     20        * inspector/InspectorFrontendClientLocal.cpp:
     21        (WebCore::InspectorFrontendClientLocal::frontendLoaded):
     22        * inspector/InspectorValues.cpp:
     23        (WebCore::InspectorObject::writeJSON):
     24        * inspector/front-end/inspector.js:
     25        (WebInspector.dispatchMessageToFrontend):
     26        * loader/EmptyClients.h:
     27        (WebCore::EmptyInspectorClient::sendMessageToFrontend):
     28
    1292010-06-14  Jeremy Orlow  <jorlow@chromium.org>
    230
  • trunk/WebCore/inspector/InspectorClient.h

    r60895 r61113  
    4949    virtual void populateSetting(const String& key, String* value) = 0;
    5050    virtual void storeSetting(const String& key, const String& value) = 0;
     51
     52    virtual bool sendMessageToFrontend(const String& message) = 0;
    5153};
    5254
  • trunk/WebCore/inspector/InspectorController.cpp

    r61014 r61113  
    432432}
    433433
    434 void InspectorController::setFrontend(PassOwnPtr<InspectorFrontend> frontend)
    435 {
    436     ASSERT(frontend);
     434void InspectorController::connectFrontend(const ScriptObject& webInspector)
     435{
    437436    m_openingFrontend = false;
    438     m_frontend = frontend;
     437    m_frontend = new InspectorFrontend(webInspector, m_client);
    439438    releaseDOMAgent();
    440439    m_domAgent = InspectorDOMAgent::create(m_cssStore.get(), m_frontend.get());
  • trunk/WebCore/inspector/InspectorController.h

    r61014 r61113  
    137137    void showPanel(SpecialPanels);
    138138    void close();
     139
     140    // We are in transition from JS transport via webInspector to native
     141    // transport via InspectorClient. After migration, webInspector parameter should
     142    // be removed.
     143    void connectFrontend(const ScriptObject& webInspector);
    139144    void disconnectFrontend();
    140145
     
    154159
    155160    bool windowVisible();
    156     void setFrontend(PassOwnPtr<InspectorFrontend>);
    157161
    158162    void didCommitLoad(DocumentLoader*);
  • trunk/WebCore/inspector/InspectorFrontend.cpp

    r61014 r61113  
    3737#include "InjectedScript.h"
    3838#include "InjectedScriptHost.h"
     39#include "InspectorClient.h"
    3940#include "InspectorController.h"
    4041#include "InspectorWorkerResource.h"
     
    5051namespace WebCore {
    5152
    52 InspectorFrontend::InspectorFrontend(ScriptObject webInspector)
     53InspectorFrontend::InspectorFrontend(ScriptObject webInspector, InspectorClient* inspectorClient)
    5354    : m_webInspector(webInspector)
     55    , m_inspectorClient(inspectorClient)
    5456{
    5557}
  • trunk/WebCore/inspector/InspectorFrontend.h

    r61014 r61113  
    3131#define InspectorFrontend_h
    3232
     33#include "InspectorValues.h"
    3334#include "ScriptArray.h"
    3435#include "ScriptObject.h"
     
    4041    class Database;
    4142    class Frame;
     43    class InspectorClient;
    4244    class InspectorResource;
     45    class InspectorWorkerResource;
    4346    class Node;
    4447    class ScriptString;
    4548    class SerializedScriptValue;
    4649    class Storage;
    47     class InspectorWorkerResource;
    4850
    4951    class InspectorFrontend : public Noncopyable {
    5052    public:
    51         InspectorFrontend(ScriptObject webInspector);
     53        // We are in transition from JS transport via webInspector to native
     54        // transport via inspectorClient. After migration, webInspector parameter should
     55        // be removed.
     56        InspectorFrontend(ScriptObject webInspector, InspectorClient* inspectorClient);
    5257        ~InspectorFrontend();
    5358
     
    174179        void callSimpleFunction(const String& functionName);
    175180        ScriptObject m_webInspector;
     181        InspectorClient* m_inspectorClient;
    176182    };
    177183
  • trunk/WebCore/inspector/InspectorFrontendClientLocal.cpp

    r60895 r61113  
    9090        return;
    9191    }
    92     m_inspectorController->setFrontend(new InspectorFrontend(webInspectorObj));
     92    m_inspectorController->connectFrontend(webInspectorObj);
    9393}
    9494
  • trunk/WebCore/inspector/InspectorValues.cpp

    r60895 r61113  
    626626        Dictionary::const_iterator it = m_data.find(m_order[i]);
    627627        ASSERT(it != m_data.end());
    628         if (it != m_data.begin())
     628        if (i)
    629629            output->append(',');
    630630        doubleQuoteString(it->first, output);
  • trunk/WebCore/inspector/front-end/inspector.js

    r61014 r61113  
    573573    setTimeout(delayDispatch, 0);
    574574}
     575
     576WebInspector.dispatchMessageFromBackend = function(arguments)
     577{
     578    var methodName = arguments.shift();
     579    WebInspector[methodName].apply(this, arguments);
     580}
     581
    575582
    576583WebInspector.windowResize = function(event)
  • trunk/WebCore/loader/EmptyClients.h

    r60895 r61113  
    487487    virtual void populateSetting(const String&, String*) { }
    488488    virtual void storeSetting(const String&, const String&) { }
     489    virtual bool sendMessageToFrontend(const String&) { return false; }
    489490};
    490491
  • trunk/WebKit/ChangeLog

    r60895 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * efl/WebCoreSupport/InspectorClientEfl.cpp:
     13        (WebCore::InspectorClientEfl::sendMessageToFrontend):
     14        * efl/WebCoreSupport/InspectorClientEfl.h:
     15
    1162010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>
    217
  • trunk/WebKit/cf/ChangeLog

    r60895 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebCoreSupport/WebInspectorClientCF.cpp:
     13        (WebInspectorClient::releaseFrontendPage):
     14        (WebInspectorClient::sendMessageToFrontend):
     15
    1162010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>
    217
  • trunk/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp

    r60895 r61113  
    5454#include <CoreFoundation/CoreFoundation.h>
    5555
     56#include <WebCore/Frame.h>
     57#include <WebCore/Page.h>
    5658#include <WebCore/PlatformString.h>
    5759
     
    9395    CFPreferencesSetAppValue(preferencesKey.get(), objectToStore.get(), kCFPreferencesCurrentApplication);
    9496}
     97
     98void WebInspectorClient::releaseFrontendPage()
     99{
     100    m_frontendPage = 0;
     101}
     102
     103bool WebInspectorClient::sendMessageToFrontend(const String& message)
     104{
     105    if (!m_frontendPage)
     106        return false;
     107
     108    Frame* frame = m_frontendPage->mainFrame();
     109    if (!frame)
     110        return false;
     111
     112    ScriptController* scriptController = frame->script();
     113    if (!scriptController)
     114        return false;
     115
     116    String dispatchToFrontend("WebInspector.dispatchMessageFromBackend(");
     117    dispatchToFrontend += message;
     118    dispatchToFrontend += ");";
     119    scriptController->executeScript(dispatchToFrontend);
     120    return true;
     121}
  • trunk/WebKit/chromium/ChangeLog

    r61097 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * src/InspectorClientImpl.cpp:
     13        (WebKit::InspectorClientImpl::sendMessageToFrontend):
     14        * src/InspectorClientImpl.h:
     15        * src/WebDevToolsAgentImpl.cpp:
     16        (WebKit::WebDevToolsAgentImpl::setInspectorFrontendProxyToInspectorController):
     17
    1182010-06-13  Tony Chang  <tony@chromium.org>
    219
  • trunk/WebKit/chromium/src/InspectorClientImpl.cpp

    r60895 r61113  
    3636#include "NotImplemented.h"
    3737#include "Page.h"
     38#include "WebDevToolsAgentImpl.h"
     39#include "WebDevToolsMessageData.h"
    3840#include "WebRect.h"
    3941#include "WebURL.h"
     
    103105}
    104106
     107bool InspectorClientImpl::sendMessageToFrontend(const WebCore::String& message)
     108{
     109    WebDevToolsAgentImpl* devToolsAgent = static_cast<WebDevToolsAgentImpl*>(m_inspectedWebView->devToolsAgent());
     110    if (!devToolsAgent)
     111        return false;
     112
     113    WebVector<WebString> arguments(size_t(1));
     114    arguments[0] = message;
     115    WebDevToolsMessageData data;
     116    data.className = "ToolsAgentDelegate";
     117    data.methodName = "dispatchOnClient";
     118    data.arguments.swap(arguments);
     119    devToolsAgent->sendRpcMessage(data);
     120    return true;
     121}
     122
    105123} // namespace WebKit
  • trunk/WebKit/chromium/src/InspectorClientImpl.h

    r60895 r61113  
    3737
    3838namespace WebKit {
     39
     40class WebDevToolsAgentClient;
    3941class WebViewImpl;
    4042
     
    4749    virtual void inspectorDestroyed();
    4850    virtual void openInspectorFrontend(WebCore::InspectorController*);
     51
    4952    virtual void highlight(WebCore::Node*);
    5053    virtual void hideHighlight();
    51     virtual void populateSetting(
    52         const WebCore::String& key,
    53         WebCore::String* value);
    54     virtual void storeSetting(
    55         const WebCore::String& key,
    56         const WebCore::String& value);
    5754
     55    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
     56    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
     57
     58    virtual bool sendMessageToFrontend(const WebCore::String&);
    5859private:
    5960
  • trunk/WebKit/chromium/src/WebDevToolsAgentImpl.cpp

    r60895 r61113  
    476476        v8::Local<v8::Context>::New(m_utilityContext));
    477477    InspectorController* ic = inspectorController();
    478     ic->setFrontend(new InspectorFrontend(
    479         ScriptObject(state, m_utilityContext->Global())));
     478    ic->connectFrontend(ScriptObject(state, m_utilityContext->Global()));
    480479}
    481480
  • trunk/WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp

    r60895 r61113  
    5959}
    6060
     61bool InspectorClientEfl::sendMessageToFrontend(const String&)
     62{
     63    notImpelemented();
     64    return false;
    6165}
     66
     67
     68}
  • trunk/WebKit/efl/WebCoreSupport/InspectorClientEfl.h

    r60895 r61113  
    5151    virtual void populateSetting(const String& key, String* value);
    5252    virtual void storeSetting(const String& key, const String& value);
     53
     54    virtual bool sendMessageToFrontend(const String&);
    5355};
    5456}
  • trunk/WebKit/gtk/ChangeLog

    r60947 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebCoreSupport/InspectorClientGtk.cpp:
     13        (WebKit::InspectorClient::releaseFrontendPage):
     14        (WebKit::InspectorClient::sendMessageToFrontend):
     15        * WebCoreSupport/InspectorClientGtk.h:
     16
    1172010-06-10  Eric Seidel  <eric@webkit.org>
    218
  • trunk/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp

    r60895 r61113  
    2020#include "InspectorClientGtk.h"
    2121
     22#include "Frame.h"
    2223#include "webkitwebview.h"
    2324#include "webkitwebinspector.h"
     
    3940InspectorClient::InspectorClient(WebKitWebView* webView)
    4041    : m_inspectedWebView(webView)
     42    , m_frontendPage(0)
     43    , m_frontendClient(0)
    4144{}
     45
     46InspectorClient::~InspectorClient()
     47{
     48    if (m_frontendClient) {
     49        m_frontendClient->disconnectInspectorClient();
     50        m_frontendClient = 0;
     51    }
     52}
    4253
    4354void InspectorClient::inspectorDestroyed()
     
    8192    gtk_widget_show(GTK_WIDGET(inspectorWebView));
    8293
    83     Page* inspectorPage = core(inspectorWebView);
    84     inspectorPage->inspectorController()->setInspectorFrontendClient(new InspectorFrontendClient(m_inspectedWebView, inspectorWebView, webInspector, inspectorPage));
     94    m_frontendPage = core(inspectorWebView);
     95    m_frontendClient = new InspectorFrontendClient(m_inspectedWebView, inspectorWebView, webInspector, m_frontendPage, this);
     96    m_frontendPage->inspectorController()->setInspectorFrontendClient(m_frontendClient);
     97}
     98
     99void InspectorClient::releaseFrontendPage()
     100{
     101    m_frontendPage = 0;
    85102}
    86103
     
    105122}
    106123
     124bool InspectorClient::sendMessageToFrontend(const String& message)
     125{
     126    if (!m_frontendPage)
     127        return false;
     128
     129    Frame* frame = m_frontendPage->mainFrame();
     130    if (!frame)
     131        return false;
     132
     133    ScriptController* scriptController = frame->script();
     134    if (!scriptController)
     135        return false;
     136
     137    String dispatchToFrontend("WebInspector.dispatchMessageToFrontend(");
     138    dispatchToFrontend += message;
     139    dispatchToFrontend += ");";
     140    scriptController->executeScript(dispatchToFrontend);
     141    return true;
     142}
    107143
    108144bool destroyed = TRUE;
    109145
    110 InspectorFrontendClient::InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, Page* inspectorPage)
     146InspectorFrontendClient::InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, Page* inspectorPage, InspectorClient* inspectorClient)
    111147    : InspectorFrontendClientLocal(core(inspectedWebView)->inspectorController(), inspectorPage)
    112148    , m_inspectorWebView(inspectorWebView)
    113149    , m_inspectedWebView(inspectedWebView)
    114150    , m_webInspector(webInspector)
     151    , m_inspectorClient(inspectorClient)
    115152{
    116153    g_signal_connect(m_inspectorWebView, "destroy",
     
    120157InspectorFrontendClient::~InspectorFrontendClient()
    121158{
     159    if (m_inspectorClient) {
     160        m_inspectorClient->disconnectFrontendClient();
     161        m_inspectorClient = 0;
     162    }
    122163    ASSERT(!m_webInspector);
    123164}
     
    138179    g_signal_emit_by_name(webInspector, "close-window", &handled);
    139180    ASSERT(handled);
     181
     182    if (m_inspectorClient)
     183        m_inspectorClient->releaseFrontendPage();
    140184
    141185    /* we should now dispose our own reference */
  • trunk/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h

    r60895 r61113  
    4343namespace WebKit {
    4444
     45    class InspectorFrontendClient;
     46
    4547    class InspectorClient : public WebCore::InspectorClient {
    4648    public:
    4749        InspectorClient(WebKitWebView* webView);
     50        ~InspectorClient();
     51
     52        void disconnectFrontendClient() { m_frontendClient = 0; }
    4853
    4954        virtual void inspectorDestroyed();
     
    5762        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
    5863
     64        virtual bool sendMessageToFrontend(const WebCore::String&);
     65
     66        void releaseFrontendPage();
     67
    5968    private:
    6069        WebKitWebView* m_inspectedWebView;
     70        WebCore::Page* m_frontendPage;
     71        InspectorFrontendClient* m_frontendClient;
    6172    };
    6273
    6374    class InspectorFrontendClient : public WebCore::InspectorFrontendClientLocal {
    6475    public:
    65         InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, WebCore::Page* inspectorPage);
     76        InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, WebCore::Page* inspectorPage, InspectorClient* inspectorClient);
     77
     78        void disconnectInspectorClient() { m_inspectorClient = 0; }
    6679
    6780        void destroyInspectorWindow();
     
    87100        WebKitWebView* m_inspectedWebView;
    88101        WebKitWebInspector* m_webInspector;
     102        InspectorClient* m_inspectorClient;
    89103    };
    90104}
  • trunk/WebKit/haiku/ChangeLog

    r60895 r61113  
    1 2010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>
    2 
    3         Unreviewed, rolling out r60889.
    4         http://trac.webkit.org/changeset/60889
    5         https://bugs.webkit.org/show_bug.cgi?id=40365
    6 
    7         gtk bot has some kind of memory corruption (Requested by
    8         loislo on #webkit).
    9 
    10         * WebCoreSupport/InspectorClientHaiku.cpp:
    11         * WebCoreSupport/InspectorClientHaiku.h:
    12 
    13 2010-06-07  Ilya Tikhonovsky  <loislo@chromium.org>
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
    142
    153        Reviewed by Pavel Feldman.
     
    2614        * WebCoreSupport/InspectorClientHaiku.h:
    2715
     162010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>
     17
     18        Unreviewed, rolling out r60889.
     19        http://trac.webkit.org/changeset/60889
     20        https://bugs.webkit.org/show_bug.cgi?id=40365
     21
     22        gtk bot has some kind of memory corruption (Requested by
     23        loislo on #webkit).
     24
     25        * WebCoreSupport/InspectorClientHaiku.cpp:
     26        * WebCoreSupport/InspectorClientHaiku.h:
     27
     282010-06-07  Ilya Tikhonovsky  <loislo@chromium.org>
     29
     30        Reviewed by Pavel Feldman.
     31
     32        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     33        data from inspected page to WebInspector as JSON string via http. The native
     34        serialization to JSON string is supported by InspectorValue's classes. This patch
     35        has the implementation of sendMessageToFrontend function. WebKit version of it still
     36        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     37        https://bugs.webkit.org/show_bug.cgi?id=40134
     38
     39        * WebCoreSupport/InspectorClientHaiku.cpp:
     40        (WebCore::InspectorClientHaiku::sendMessageToFrontend):
     41        * WebCoreSupport/InspectorClientHaiku.h:
     42
    28432010-05-31  Lyon Chen  <liachen@rim.com>
    2944
  • trunk/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp

    r60895 r61113  
    6868}
    6969
     70bool InspectorClientHaiku::sendMessageToFrontend(const String&)
     71{
     72    notImplemented();
     73    return false;
     74}
     75
    7076} // namespace WebCore
    7177
  • trunk/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h

    r60895 r61113  
    5050        virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
    5151        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
     52
     53        virtual bool sendMessageToFrontend(const WebCore::String&);
    5254    };
    5355} // namespace WebCore
  • trunk/WebKit/mac/ChangeLog

    r60974 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebCoreSupport/WebInspectorClient.h:
     13        * WebCoreSupport/WebInspectorClient.mm:
     14        (WebInspectorClient::WebInspectorClient):
     15        (WebInspectorClient::openInspectorFrontend):
     16
    1172010-06-10  David Hyatt  <hyatt@apple.com>
    218
  • trunk/WebKit/mac/WebCoreSupport/WebInspectorClient.h

    r60895 r61113  
    4343#endif
    4444
     45namespace WebCore {
     46
     47class Page;
     48
     49}
     50
    4551class WebInspectorClient : public WebCore::InspectorClient {
    4652public:
     
    5763    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
    5864
     65    virtual bool sendMessageToFrontend(const WebCore::String&);
     66
     67    void releaseFrontendPage();
     68
    5969private:
    6070    WebView *m_webView;
    6171    RetainPtr<WebNodeHighlighter> m_highlighter;
     72    WebCore::Page* m_frontendPage;
    6273};
     74
    6375
    6476class WebInspectorFrontendClient : public WebCore::InspectorFrontendClientLocal {
     
    6779
    6880    virtual void frontendLoaded();
    69    
     81
    7082    virtual WebCore::String localizedStringsURL();
    7183    virtual WebCore::String hiddenPanels();
    72    
     84
    7385    virtual void bringToFront();
    7486    virtual void closeWindow();
    75    
     87
    7688    virtual void attachWindow();
    7789    virtual void detachWindow();
    78    
     90
    7991    virtual void setAttachedWindowHeight(unsigned height);
    8092    virtual void inspectedURLChanged(const WebCore::String& newURL);
  • trunk/WebKit/mac/WebCoreSupport/WebInspectorClient.mm

    r60895 r61113  
    5151    WebView *_webView;
    5252    WebInspectorFrontendClient* _frontendClient;
     53    WebInspectorClient* _inspectorClient;
    5354    BOOL _attachedToInspectedWebView;
    5455    BOOL _shouldAttach;
     
    6263- (BOOL)attached;
    6364- (void)setFrontendClient:(WebInspectorFrontendClient*)frontendClient;
     65- (void)setInspectorClient:(WebInspectorClient*)inspectorClient;
    6466- (void)setAttachedWindowHeight:(unsigned)height;
    6567- (void)destroyInspectorView;
     
    8486: m_webView(webView)
    8587, m_highlighter(AdoptNS, [[WebNodeHighlighter alloc] initWithInspectedWebView:webView])
     88, m_frontendPage(0)
    8689{
    8790}
     
    9598{
    9699    RetainPtr<WebInspectorWindowController> windowController(AdoptNS, [[WebInspectorWindowController alloc] initWithInspectedWebView:m_webView]);
    97     Page* frontendPage = core([windowController.get() webView]);
    98 
    99     frontendPage->inspectorController()->setInspectorFrontendClient(new WebInspectorFrontendClient(m_webView, windowController.get(), inspectorController, frontendPage));
     100    [windowController.get() setInspectorClient:this];
     101    m_frontendPage = core([windowController.get() webView]);
     102    m_frontendPage->inspectorController()->setInspectorFrontendClient(new WebInspectorFrontendClient(m_webView, windowController.get(), inspectorController, m_frontendPage));
    100103}
    101104
     
    408411}
    409412
     413- (void)setInspectorClient:(WebInspectorClient*)inspectorClient
     414{
     415    _inspectorClient = inspectorClient;
     416}
     417
    410418- (void)setAttachedWindowHeight:(unsigned)height
    411419{
     
    439447    if (Page* inspectedPage = [_inspectedWebView page])
    440448        inspectedPage->inspectorController()->disconnectFrontend();
     449
     450    _inspectorClient->releaseFrontendPage();
    441451
    442452    [_webView close];
  • trunk/WebKit/qt/ChangeLog

    r61110 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebCoreSupport/InspectorClientQt.cpp:
     13        (WebCore::InspectorClientQt::InspectorClientQt):
     14        (WebCore::InspectorClientQt::openInspectorFrontend):
     15        (WebCore::InspectorClientQt::releaseFrontendPage):
     16        (WebCore::InspectorClientQt::sendMessageToFrontend):
     17        * WebCoreSupport/InspectorClientQt.h:
     18
    1192010-06-13  Charles Wei  <charles.wei@torchmobile.com.cn>
    220
  • trunk/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp

    r60928 r61113  
    3232#include "InspectorClientQt.h"
    3333
     34#include "Frame.h"
    3435#include "InspectorController.h"
    3536#include "NotImplemented.h"
    3637#include "Page.h"
    3738#include "PlatformString.h"
     39#include "ScriptController.h"
    3840#include "qwebinspector.h"
    3941#include "qwebinspector_p.h"
     
    7375InspectorClientQt::InspectorClientQt(QWebPage* page)
    7476    : m_inspectedWebPage(page)
     77    , m_frontendWebPage(0)
    7578{}
    7679
     
    102105    inspector->d->setFrontend(inspectorView);
    103106
    104     inspectorView->page()->d->page->inspectorController()->setInspectorFrontendClient(new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView));
     107    inspectorView->page()->d->page->inspectorController()->setInspectorFrontendClient(new InspectorFrontendClientQt(m_inspectedWebPage, inspectorView, this));
     108    m_frontendWebPage = inspectorPage;
     109}
     110
     111void InspectorClientQt::releaseFrontendPage()
     112{
     113    m_frontendWebPage = 0;
    105114}
    106115
     
    159168}
    160169
     170bool InspectorClientQt::sendMessageToFrontend(const String& message)
     171{
     172    if (!m_frontendWebPage)
     173        return false;
     174
     175    Page* frontendPage = QWebPagePrivate::core(m_frontendWebPage);
     176    if (!frontendPage)
     177        return false;
     178
     179    Frame* frame = frontendPage->mainFrame();
     180    if (!frame)
     181        return false;
     182
     183    ScriptController* scriptController = frame->script();
     184    if (!scriptController)
     185        return false;
     186
     187    String dispatchToFrontend("WebInspector.dispatchMessageToFrontend(");
     188    dispatchToFrontend += message;
     189    dispatchToFrontend += ");";
     190    scriptController->executeScript(dispatchToFrontend);
     191    return true;
     192}
     193
    161194static String variantToSetting(const QVariant& qvariant)
    162195{
     
    182215}
    183216
    184 InspectorFrontendClientQt::InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView)
     217InspectorFrontendClientQt::InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView, InspectorClientQt* inspectorClient)
    185218    : InspectorFrontendClientLocal(inspectedWebPage->d->page->inspectorController(), inspectorView->page()->d->page)
    186219    , m_inspectedWebPage(inspectedWebPage)
    187220    , m_inspectorView(inspectorView)
    188221    , m_destroyingInspectorView(false)
     222    , m_inspectorClient(inspectorClient)
    189223{
    190224}
     
    224258    m_inspectedWebPage->d->inspectorController()->disconnectFrontend();
    225259#endif
     260    m_inspectorClient->releaseFrontendPage();
     261
    226262    // Clear pointer before deleting WebView to avoid recursive calls to its destructor.
    227263    delete m_inspectorView.release();
  • trunk/WebKit/qt/WebCoreSupport/InspectorClientQt.h

    r60895 r61113  
    5959    virtual void storeSetting(const String& key, const String& value);
    6060
     61    virtual bool sendMessageToFrontend(const String&);
     62
     63    void releaseFrontendPage();
     64
    6165private:
    6266    QWebPage* m_inspectedWebPage;
     67    QWebPage* m_frontendWebPage;
    6368};
    6469
    6570class InspectorFrontendClientQt : public InspectorFrontendClientLocal {
    6671public:
    67     InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView);
     72    InspectorFrontendClientQt(QWebPage* inspectedWebPage, PassOwnPtr<QWebView> inspectorView, InspectorClientQt* inspectorClient);
    6873
    6974    virtual void frontendLoaded();
     
    8994    QString m_inspectedURL;
    9095    bool m_destroyingInspectorView;
     96    InspectorClientQt* m_inspectorClient;
    9197};
    9298}
  • trunk/WebKit/win/ChangeLog

    r60950 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebCoreSupport/WebInspectorClient.cpp:
     13        (WebInspectorClient::WebInspectorClient):
     14        (WebInspectorClient::~WebInspectorClient):
     15        (WebInspectorClient::openInspectorFrontend):
     16        * WebCoreSupport/WebInspectorClient.h:
     17
    1182010-06-10  Eric Seidel  <eric@webkit.org>
    219
  • trunk/WebKit/win/WebCoreSupport/WebInspectorClient.cpp

    r60895 r61113  
    7070WebInspectorClient::WebInspectorClient(WebView* webView)
    7171    : m_inspectedWebView(webView)
     72    , m_frontendPage(0)
    7273{
    7374    ASSERT(m_inspectedWebView);
     
    7778WebInspectorClient::~WebInspectorClient()
    7879{
     80    m_frontendPage = 0;
    7981}
    8082
     
    173175        return;
    174176
    175     Page* page = core(frontendWebView.get());
    176     page->inspectorController()->setInspectorFrontendClient(new WebInspectorFrontendClient(m_inspectedWebView, m_inspectedWebViewHwnd, frontendHwnd, frontendWebView, frontendWebViewHwnd, this));
     177    m_frontendPage = core(frontendWebView.get());
     178    WebInspectorFrontendClient* frontendClient = new WebInspectorFrontendClient(m_inspectedWebView, m_inspectedWebViewHwnd, frontendHwnd, frontendWebView, frontendWebViewHwnd, this);
     179    m_frontendPage->inspectorController()->setInspectorFrontendClient(frontendClient);
    177180    m_frontendHwnd = frontendHwnd;
    178181}
  • trunk/WebKit/win/WebCoreSupport/WebInspectorClient.h

    r60895 r61113  
    3838#include <windows.h>
    3939
     40namespace WebCore {
     41
     42class Page;
     43
     44}
     45
    4046class WebNodeHighlight;
    4147class WebView;
     
    5662    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
    5763
     64    virtual bool sendMessageToFrontend(const WebCore::String&);
     65
    5866    void updateHighlight();
    59     void frontendClosing() { m_frontendHwnd = 0; }
     67    void frontendClosing()
     68    {
     69        m_frontendHwnd = 0;
     70        releaseFrontendPage();
     71    }
    6072
     73    void releaseFrontendPage();
    6174private:
    6275    ~WebInspectorClient();
    6376
    6477    WebView* m_inspectedWebView;
     78    WebCore::Page* m_frontendPage;
    6579    HWND m_inspectedWebViewHwnd;
    6680    HWND m_frontendHwnd;
  • trunk/WebKit/wx/ChangeLog

    r60895 r61113  
     12010-06-14  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
     6        data from inspected page to WebInspector as JSON string via http. The native
     7        serialization to JSON string is supported by InspectorValue's classes. This patch
     8        has the implementation of sendMessageToFrontend function. WebKit version of it still
     9        uses ScriptFunctionCall and will be switched to another transport a little bit later.
     10        https://bugs.webkit.org/show_bug.cgi?id=40134
     11
     12        * WebKitSupport/InspectorClientWx.cpp:
     13        (WebCore::InspectorClientWx::sendMessageToFrontend):
     14        * WebKitSupport/InspectorClientWx.h:
     15
    1162010-06-09  Sheriff Bot  <webkit.review.bot@gmail.com>
    217
  • trunk/WebKit/wx/WebKitSupport/InspectorClientWx.cpp

    r60895 r61113  
    7373}
    7474
     75bool InspectorClientWx::sendMessageToFrontend(const String&)
     76{
     77    notImplemented();
     78    return false;
     79}
     80
    7581};
  • trunk/WebKit/wx/WebKitSupport/InspectorClientWx.h

    r60895 r61113  
    4949    virtual void populateSetting(const String& key, String* value);
    5050    virtual void storeSetting(const String& key, const String& value);
     51
     52    virtual bool sendMessageToFrontend(const String&);
    5153};
    5254
Note: See TracChangeset for help on using the changeset viewer.