Changeset 95636 in webkit


Ignore:
Timestamp:
Sep 21, 2011 9:13:48 AM (13 years ago)
Author:
pfeldman@chromium.org
Message:

Web Inspector: introduce Page.enable and Page.disable
https://bugs.webkit.org/show_bug.cgi?id=68530

Otherwise protocol is violating the contract of not sending
notifications by default.

Reviewed by Yury Semikhatsky.

  • inspector/Inspector.json:
Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r95634 r95636  
     12011-09-21  Pavel Feldman  <pfeldman@google.com>
     2
     3        Web Inspector: introduce Page.enable and Page.disable
     4        https://bugs.webkit.org/show_bug.cgi?id=68530
     5
     6        Otherwise protocol is violating the contract of not sending
     7        notifications by default.
     8
     9        Reviewed by Yury Semikhatsky.
     10
     11        * inspector/Inspector.json:
     12
    1132011-09-21  Pavel Feldman  <pfeldman@google.com>
    214
  • trunk/Source/WebCore/inspector/Inspector.json

    r95621 r95636  
    116116        "commands": [
    117117            {
     118                "name": "enable",
     119                "description": "Enables page domain notifications."
     120            },
     121            {
     122                "name": "disable",
     123                "description": "Disables page domain notifications."
     124            },
     125            {
    118126                "name": "addScriptToEvaluateOnLoad",
    119127                "parameters": [
     
    137145                "parameters": [
    138146                    { "name": "url", "type": "string", "description": "URL to open." },
    139                     { "name": "newWindow", "optional": true, "type": "boolean", "description": "If True, opens given URL in a new window or tab." }
    140                 ],
    141                 "description": "Opens given URL either in the inspected page or in a new tab / window."
     147                    { "name": "newWindow", "optional": true, "type": "boolean", "description": "If true, opens given URL in a new window or tab." }
     148                ],
     149                "description": "Opens given URL either in the inspected page or in a new tab / window.",
     150                "hidden": true
    142151            },
    143152            {
     
    228237    {
    229238        "domain": "Runtime",
    230         "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose type, string representation and unique identifier that can be used for further object interaction. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
     239        "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
    231240        "types": [
    232241            {
     
    302311                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
    303312                ],
    304                 "description": "Calls function with given declaration on the given object."
     313                "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object."
    305314            },
    306315            {
     
    313322                    { "name": "result", "type": "array", "items": { "$ref": "PropertyDescriptor"}, "description": "Object properties." }
    314323                ],
    315                 "description": "Returns properties of a given object."
     324                "description": "Returns properties of a given object. Object group of the result is inherited from the target object."
    316325            },
    317326            {
     
    437446                "type": "string",
    438447                "description": "Unique request identifier."
     448            },
     449            {
     450                "id": "Timestamp",
     451                "type": "number",
     452                "description": "Number of seconds since epoch."
     453            },
     454            {
     455                "id": "Headers",
     456                "type": "object",
     457                "description": "Request / response headers as keys / values of JSON object."
    439458            },
    440459            {
     
    464483                    { "name": "url", "type": "string", "description": "Request URL." },
    465484                    { "name": "method", "type": "string", "description": "HTTP request method." },
    466                     { "name": "headers", "type": "object", "description": "HTTP request headers." },
     485                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." },
    467486                    { "name": "postData", "type": "string", "optional": true, "description": "HTTP POST request data." }
    468487                ]
     
    476495                    { "name": "status", "type": "number", "description": "HTTP response status code." },
    477496                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
    478                     { "name": "headers", "type": "object", "description": "HTTP response headers." },
     497                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
    479498                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
    480499                    { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
    481                     { "name": "requestHeaders", "type": "object", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
     500                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
    482501                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
    483502                    { "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
     
    528547            {
    529548                "name": "setExtraHTTPHeaders",
    530                 "description": "Allows sending extra HTTP headers with the requests from this page.",
    531                 "parameters": [
    532                     { "name": "headers", "type": "object", "description": "Map with extra HTTP headers." }
     549                "description": "Specifies whether to always send extra HTTP headers with the requests from this page.",
     550                "parameters": [
     551                    { "name": "headers", "$ref": "Headers", "description": "Map with extra HTTP headers." }
    533552                ]
    534553            },
     
    541560                "returns": [
    542561                    { "name": "body", "type": "string", "description": "Response body." },
    543                     { "name": "base64Encoded", "type": "boolean", "description": "True, if content was served as base64." }
     562                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was sent as base64." }
    544563                ]
    545564            },
     
    570589                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
    571590                    { "name": "request", "$ref": "Request", "description": "Request data." },
    572                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     591                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    573592                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
    574593                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "JavaScript stack trace upon issuing this request." },
     
    588607                "parameters": [
    589608                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    590                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     609                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    591610                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
    592611                    { "name": "response", "$ref": "Response", "description": "Response data." }
     
    598617                "parameters": [
    599618                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    600                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     619                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    601620                    { "name": "dataLength", "type": "integer", "description": "Data chunk length." },
    602621                    { "name": "encodedDataLength", "type": "integer", "description": "Actual bytes received (might be less than dataLength for compressed encodings)." }
     
    608627                "parameters": [
    609628                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    610                     { "name": "timestamp", "type": "number", "description": "Timestamp." }
     629                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
    611630                ]
    612631            },
     
    616635                "parameters": [
    617636                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    618                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     637                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    619638                    { "name": "errorText", "type": "string", "description": "User friendly error message." },
    620639                    { "name": "canceled", "type": "boolean", "optional": true, "description": "True if loading was canceled." }
     
    629648                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
    630649                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
    631                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     650                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    632651                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
    633652                    { "name": "resource", "$ref": "CachedResource", "description": "Cached resource data." }
     
    639658                "parameters": [
    640659                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    641                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     660                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    642661                    { "name": "request", "type": "object", "description": "WebSocket request data." }
    643662                ],
     
    649668                "parameters": [
    650669                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    651                     { "name": "timestamp", "type": "number", "description": "Timestamp." },
     670                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
    652671                    { "name": "response", "type": "object", "description": "WebSocket response data." }
    653672                ],
     
    668687                "parameters": [
    669688                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
    670                     { "name": "timestamp", "type": "number", "description": "Timestamp." }
     689                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
    671690                ],
    672691                "hidden": true
     
    898917                    { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
    899918                    { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." },
    900                     { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." },
     919                    { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." }
    901920                ],
    902921                "description": "Configuration data for the highlighting of page elements."
     
    15041523            {
    15051524                "name": "started",
    1506                 "description": "Fired when timeline has been started."
     1525                "description": "Fired when timeline has been started.",
     1526                "hidden": true
    15071527            },
    15081528            {
    15091529                "name": "stopped",
    1510                 "description": "Fired when timeline has been stopped."
     1530                "description": "Fired when timeline has been stopped.",
     1531                "hidden": true
    15111532            },
    15121533            {
  • trunk/Source/WebCore/inspector/InspectorController.cpp

    r95271 r95636  
    9999    , m_state(adoptPtr(new InspectorState(inspectorClient)))
    100100    , m_inspectorAgent(adoptPtr(new InspectorAgent(page, m_injectedScriptManager.get(), m_instrumentingAgents.get())))
    101     , m_pageAgent(InspectorPageAgent::create(m_instrumentingAgents.get(), page, m_injectedScriptManager.get()))
     101    , m_pageAgent(InspectorPageAgent::create(m_instrumentingAgents.get(), page, m_state.get(), m_injectedScriptManager.get()))
    102102    , m_domAgent(InspectorDOMAgent::create(m_instrumentingAgents.get(), m_pageAgent.get(), inspectorClient, m_state.get(), m_injectedScriptManager.get()))
    103103    , m_cssAgent(adoptPtr(new InspectorCSSAgent(m_instrumentingAgents.get(), m_domAgent.get())))
     
    343343    m_state->loadFromCookie(inspectorStateCookie);
    344344
     345    m_pageAgent->restore();
    345346    m_domAgent->restore();
    346347    m_resourceAgent->restore();
  • trunk/Source/WebCore/inspector/InspectorPageAgent.cpp

    r95093 r95636  
    5151#include "InjectedScriptManager.h"
    5252#include "InspectorFrontend.h"
     53#include "InspectorState.h"
    5354#include "InspectorValues.h"
    5455#include "InstrumentingAgents.h"
     
    7172// This should be kept the same as the one in front-end/utilities.js
    7273static const char regexSpecialCharacters[] = "[](){}+-*.,?\\^$|";
     74}
     75
     76namespace PageAgentState {
     77static const char pageAgentEnabled[] = "resourceAgentEnabled";
    7378}
    7479
     
    171176}
    172177
    173 PassOwnPtr<InspectorPageAgent> InspectorPageAgent::create(InstrumentingAgents* instrumentingAgents, Page* page, InjectedScriptManager* injectedScriptManager)
    174 {
    175     return adoptPtr(new InspectorPageAgent(instrumentingAgents, page, injectedScriptManager));
     178PassOwnPtr<InspectorPageAgent> InspectorPageAgent::create(InstrumentingAgents* instrumentingAgents, Page* page, InspectorState* state, InjectedScriptManager* injectedScriptManager)
     179{
     180    return adoptPtr(new InspectorPageAgent(instrumentingAgents, page, state, injectedScriptManager));
    176181}
    177182
     
    263268}
    264269
    265 InspectorPageAgent::InspectorPageAgent(InstrumentingAgents* instrumentingAgents, Page* page, InjectedScriptManager* injectedScriptManager)
     270InspectorPageAgent::InspectorPageAgent(InstrumentingAgents* instrumentingAgents, Page* page, InspectorState* state, InjectedScriptManager* injectedScriptManager)
    266271    : m_instrumentingAgents(instrumentingAgents)
    267272    , m_page(page)
    268273    , m_injectedScriptManager(injectedScriptManager)
     274    , m_state(state)
    269275    , m_frontend(0)
    270276{
     
    274280{
    275281    m_frontend = frontend->page();
     282}
     283
     284void InspectorPageAgent::clearFrontend()
     285{
     286    ErrorString error;
     287    disable(&error);
     288    m_frontend = 0;
     289}
     290
     291void InspectorPageAgent::restore()
     292{
     293    if (m_state->getBoolean(PageAgentState::pageAgentEnabled)) {
     294        ErrorString error;
     295        enable(&error);
     296    }
     297}
     298
     299void InspectorPageAgent::enable(ErrorString*)
     300{
     301    m_state->setBoolean(PageAgentState::pageAgentEnabled, true);
    276302    m_instrumentingAgents->setInspectorPageAgent(this);
    277303}
    278304
    279 void InspectorPageAgent::clearFrontend()
    280 {
     305void InspectorPageAgent::disable(ErrorString*)
     306{
     307    m_state->setBoolean(PageAgentState::pageAgentEnabled, false);
    281308    m_instrumentingAgents->setInspectorPageAgent(0);
    282     m_frontend = 0;
    283309}
    284310
  • trunk/Source/WebCore/inspector/InspectorPageAgent.h

    r95093 r95636  
    5151class InspectorArray;
    5252class InspectorObject;
     53class InspectorState;
    5354class InstrumentingAgents;
    5455class KURL;
     
    7475    };
    7576
    76     static PassOwnPtr<InspectorPageAgent> create(InstrumentingAgents*, Page*, InjectedScriptManager*);
     77    static PassOwnPtr<InspectorPageAgent> create(InstrumentingAgents*, Page*, InspectorState*, InjectedScriptManager*);
    7778
    7879    static bool cachedResourceContent(CachedResource*, String* result, bool* base64Encoded);
     
    8788
    8889    // Page API for InspectorFrontend
     90    void enable(ErrorString*);
     91    void disable(ErrorString*);
    8992    void addScriptToEvaluateOnLoad(ErrorString*, const String& source);
    9093    void removeAllScriptsToEvaluateOnLoad(ErrorString*);
     
    108111    void setFrontend(InspectorFrontend*);
    109112    void clearFrontend();
     113    void restore();
    110114
    111115    // Cross-agents API
     
    117121
    118122private:
    119     InspectorPageAgent(InstrumentingAgents*, Page*, InjectedScriptManager*);
     123    InspectorPageAgent(InstrumentingAgents*, Page*, InspectorState*, InjectedScriptManager*);
    120124
    121125    PassRefPtr<InspectorObject> buildObjectForFrame(Frame*);
     
    125129    Page* m_page;
    126130    InjectedScriptManager* m_injectedScriptManager;
     131    InspectorState* m_state;
    127132    InspectorFrontend::Page* m_frontend;
    128133    Vector<String> m_scriptsToEvaluateOnLoad;
  • trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js

    r94754 r95636  
    4343    WebInspector.console.addEventListener(WebInspector.ConsoleModel.Events.ConsoleCleared, this._consoleCleared, this);
    4444
     45    PageAgent.enable();
     46
    4547    this.frontendReused();
    4648    InspectorBackend.registerPageDispatcher(new WebInspector.PageDispatcher(this));
  • trunk/Source/WebCore/inspector/front-end/inspector.js

    r95621 r95636  
    548548
    549549    this.console.enableAgent();
    550 
    551550    DatabaseAgent.enable();
    552551    DOMStorageAgent.enable();
Note: See TracChangeset for help on using the changeset viewer.