Changeset 79303 in webkit


Ignore:
Timestamp:
Feb 22, 2011 1:34:15 AM (13 years ago)
Author:
yurys@chromium.org
Message:

2011-02-21 Yury Semikhatsky <yurys@chromium.org>

Reviewed by Pavel Feldman.

Web Inspector: make DOM storage and Database agents have the same lifetime as InspectorAgent
https://bugs.webkit.org/show_bug.cgi?id=54891

  • inspector/InspectorAgent.cpp: (WebCore::InspectorAgent::InspectorAgent): (WebCore::InspectorAgent::setFrontend): (WebCore::InspectorAgent::disconnectFrontend): (WebCore::InspectorAgent::createFrontendLifetimeAgents): (WebCore::InspectorAgent::releaseFrontendLifetimeAgents): (WebCore::InspectorAgent::didCommitLoad):
  • inspector/InspectorAgent.h: (WebCore::InspectorAgent::instrumentingAgents):
  • inspector/InspectorDOMStorageAgent.cpp: (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent): (WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent): (WebCore::InspectorDOMStorageAgent::setFrontend): (WebCore::InspectorDOMStorageAgent::clearFrontend): (WebCore::InspectorDOMStorageAgent::selectDOMStorage): (WebCore::InspectorDOMStorageAgent::getDOMStorageResourceForId): (WebCore::InspectorDOMStorageAgent::didUseDOMStorage): (WebCore::InspectorDOMStorageAgent::clearResources):
  • inspector/InspectorDOMStorageAgent.h: (WebCore::InspectorDOMStorageAgent::create):
  • inspector/InspectorDatabaseAgent.cpp: (WebCore::InspectorDatabaseAgent::didOpenDatabase): (WebCore::InspectorDatabaseAgent::clearResources): (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent): (WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent): (WebCore::InspectorDatabaseAgent::setFrontend): (WebCore::InspectorDatabaseAgent::clearFrontend): (WebCore::InspectorDatabaseAgent::databaseForId): (WebCore::InspectorDatabaseAgent::selectDatabase):
  • inspector/InspectorDatabaseAgent.h: (WebCore::InspectorDatabaseAgent::create):
  • inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::didOpenDatabaseImpl): (WebCore::InspectorInstrumentation::didUseDOMStorageImpl):
Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r79301 r79303  
     12011-02-21  Yury Semikhatsky  <yurys@chromium.org>
     2
     3        Reviewed by Pavel Feldman.
     4
     5        Web Inspector: make DOM storage and Database agents have the same lifetime as InspectorAgent
     6        https://bugs.webkit.org/show_bug.cgi?id=54891
     7
     8        * inspector/InspectorAgent.cpp:
     9        (WebCore::InspectorAgent::InspectorAgent):
     10        (WebCore::InspectorAgent::setFrontend):
     11        (WebCore::InspectorAgent::disconnectFrontend):
     12        (WebCore::InspectorAgent::createFrontendLifetimeAgents):
     13        (WebCore::InspectorAgent::releaseFrontendLifetimeAgents):
     14        (WebCore::InspectorAgent::didCommitLoad):
     15        * inspector/InspectorAgent.h:
     16        (WebCore::InspectorAgent::instrumentingAgents):
     17        * inspector/InspectorDOMStorageAgent.cpp:
     18        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
     19        (WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent):
     20        (WebCore::InspectorDOMStorageAgent::setFrontend):
     21        (WebCore::InspectorDOMStorageAgent::clearFrontend):
     22        (WebCore::InspectorDOMStorageAgent::selectDOMStorage):
     23        (WebCore::InspectorDOMStorageAgent::getDOMStorageResourceForId):
     24        (WebCore::InspectorDOMStorageAgent::didUseDOMStorage):
     25        (WebCore::InspectorDOMStorageAgent::clearResources):
     26        * inspector/InspectorDOMStorageAgent.h:
     27        (WebCore::InspectorDOMStorageAgent::create):
     28        * inspector/InspectorDatabaseAgent.cpp:
     29        (WebCore::InspectorDatabaseAgent::didOpenDatabase):
     30        (WebCore::InspectorDatabaseAgent::clearResources):
     31        (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
     32        (WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent):
     33        (WebCore::InspectorDatabaseAgent::setFrontend):
     34        (WebCore::InspectorDatabaseAgent::clearFrontend):
     35        (WebCore::InspectorDatabaseAgent::databaseForId):
     36        (WebCore::InspectorDatabaseAgent::selectDatabase):
     37        * inspector/InspectorDatabaseAgent.h:
     38        (WebCore::InspectorDatabaseAgent::create):
     39        * inspector/InspectorInstrumentation.cpp:
     40        (WebCore::InspectorInstrumentation::didOpenDatabaseImpl):
     41        (WebCore::InspectorInstrumentation::didUseDOMStorageImpl):
     42
    1432011-02-22  Steve Lacey  <sjl@chromium.org>
    244
  • trunk/Source/WebCore/inspector/InspectorAgent.cpp

    r79234 r79303  
    6363#include "InspectorController.h"
    6464#include "InspectorDOMAgent.h"
    65 #include "InspectorDOMStorageResource.h"
    66 #include "InspectorDatabaseResource.h"
    6765#include "InspectorDebuggerAgent.h"
    6866#include "InspectorFrontend.h"
     
    144142    , m_cssAgent(new InspectorCSSAgent(m_domAgent.get()))
    145143#if ENABLE(DATABASE)
    146     , m_databaseAgentResources(InspectorDatabaseAgent::createStorage())
     144    , m_databaseAgent(InspectorDatabaseAgent::create(m_instrumentingAgents.get()))
    147145#endif
    148146#if ENABLE(DOM_STORAGE)
    149     , m_domStorageAgentResources(InspectorDOMStorageAgent::createStorage())
     147    , m_domStorageAgent(InspectorDOMStorageAgent::create(m_instrumentingAgents.get()))
    150148#endif
    151149    , m_state(new InspectorState(client))
     
    347345    m_domAgent->setFrontend(m_frontend);
    348346    m_consoleAgent->setFrontend(m_frontend);
    349 
     347#if ENABLE(DATABASE)
     348    m_databaseAgent->setFrontend(m_frontend);
     349#endif
     350#if ENABLE(DOM_STORAGE)
     351    m_domStorageAgent->setFrontend(m_frontend);
     352#endif
    350353    // Initialize Web Inspector title.
    351354    m_frontend->inspectedURLChanged(inspectedURL().string());
     
    380383    m_consoleAgent->clearFrontend();
    381384    m_domAgent->clearFrontend();
     385#if ENABLE(DATABASE)
     386    m_databaseAgent->clearFrontend();
     387#endif
     388#if ENABLE(DOM_STORAGE)
     389    m_domStorageAgent->clearFrontend();
     390#endif
    382391
    383392    releaseFrontendLifetimeAgents();
     
    396405    m_runtimeAgent = InspectorRuntimeAgent::create(m_injectedScriptHost.get());
    397406
    398 #if ENABLE(DATABASE)
    399     m_databaseAgent = InspectorDatabaseAgent::create(databaseAgentResources(), m_frontend);
    400 #endif
    401 
    402 #if ENABLE(DOM_STORAGE)
    403     m_domStorageAgent = InspectorDOMStorageAgent::create(domStorageAgentResources(), m_frontend);
    404 #endif
    405 
    406407#if ENABLE(OFFLINE_WEB_APPLICATIONS)
    407408    m_applicationCacheAgent = new InspectorApplicationCacheAgent(m_inspectedPage->mainFrame()->loader()->documentLoader(), m_frontend);
     
    414415    m_runtimeAgent.clear();
    415416    m_timelineAgent.clear();
    416 
    417 #if ENABLE(DATABASE)
    418     m_databaseAgent.clear();
    419 #endif
    420 
    421 #if ENABLE(DOM_STORAGE)
    422     m_domStorageAgent.clear();
    423 #endif
    424417
    425418#if ENABLE(OFFLINE_WEB_APPLICATIONS)
     
    540533#endif
    541534#if ENABLE(DATABASE)
    542         InspectorDatabaseAgent::clear(this);
     535        m_databaseAgent->clearResources();
    543536#endif
    544537#if ENABLE(DOM_STORAGE)
    545         InspectorDOMStorageAgent::clear(this);
    546 #endif
    547 
     538        m_domStorageAgent->clearResources();
     539#endif
    548540        if (InspectorDOMAgent* domAgent = m_instrumentingAgents->inspectorDOMAgent())
    549541            domAgent->setDocument(m_inspectedPage->mainFrame()->document());
  • trunk/Source/WebCore/inspector/InspectorAgent.h

    r79217 r79303  
    6363class InspectorDOMAgent;
    6464class InspectorDOMStorageAgent;
    65 class InspectorDOMStorageResource;
    6665class InspectorDatabaseAgent;
    6766class InspectorDatabaseResource;
     
    101100#endif
    102101
    103 class InspectorOfflineResourcesBase {
    104     WTF_MAKE_NONCOPYABLE(InspectorOfflineResourcesBase);
    105 public:
    106     virtual ~InspectorOfflineResourcesBase() {}
    107 
    108 protected:
    109     InspectorOfflineResourcesBase() {}
    110 };
    111 
    112102class InspectorAgent {
    113103    WTF_MAKE_NONCOPYABLE(InspectorAgent);
     
    146136
    147137    InspectorResourceAgent* resourceAgent();
     138
     139    InstrumentingAgents* instrumentingAgents() const { return m_instrumentingAgents.get(); }
    148140
    149141    InspectorAgent* inspectorAgent() { return this; }
     
    156148#if ENABLE(DATABASE)
    157149    InspectorDatabaseAgent* databaseAgent() { return m_databaseAgent.get(); }
    158     InspectorOfflineResourcesBase* databaseAgentResources() { return m_databaseAgentResources.get(); }
    159150#endif
    160151#if ENABLE(DOM_STORAGE)
    161152    InspectorDOMStorageAgent* domStorageAgent() { return m_domStorageAgent.get(); }
    162     InspectorOfflineResourcesBase* domStorageAgentResources() { return m_domStorageAgentResources.get(); }
    163153#endif
    164154#if ENABLE(JAVASCRIPT_DEBUGGER)
     
    282272#if ENABLE(DATABASE)
    283273    OwnPtr<InspectorDatabaseAgent> m_databaseAgent;
    284     OwnPtr<InspectorOfflineResourcesBase> m_databaseAgentResources;
    285274#endif
    286275
    287276#if ENABLE(DOM_STORAGE)
    288277    OwnPtr<InspectorDOMStorageAgent> m_domStorageAgent;
    289     OwnPtr<InspectorOfflineResourcesBase> m_domStorageAgentResources;
    290278#endif
    291279
  • trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp

    r78692 r79303  
    3737#include "ExceptionCode.h"
    3838#include "Frame.h"
    39 #include "InspectorAgent.h"
    4039#include "InspectorDOMStorageResource.h"
    4140#include "InspectorFrontend.h"
    4241#include "InspectorValues.h"
     42#include "InstrumentingAgents.h"
    4343#include "Storage.h"
    4444#include "StorageArea.h"
     
    5151typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap;
    5252
    53 class InspectorDOMStorageAgent::Resources : public InspectorOfflineResourcesBase {
    54 public:
    55     DOMStorageResourcesMap m_map;
    56 };
    57 
    58 InspectorDOMStorageAgent::InspectorDOMStorageAgent(InspectorOfflineResourcesBase* domStorageAgentResources, InspectorFrontend* frontend)
    59     : m_resources(static_cast<InspectorDOMStorageAgent::Resources*>(domStorageAgentResources))
    60     , m_frontend(frontend)
     53InspectorDOMStorageAgent::InspectorDOMStorageAgent(InstrumentingAgents* instrumentingAgents)
     54    : m_instrumentingAgents(instrumentingAgents)
     55    , m_frontend(0)
    6156{
    62     ASSERT(domStorageAgentResources);
    63     DOMStorageResourcesMap::iterator resourcesEnd = m_resources->m_map.end();
    64     for (DOMStorageResourcesMap::iterator it = m_resources->m_map.begin(); it != resourcesEnd; ++it)
    65         it->second->bind(m_frontend);
     57    m_instrumentingAgents->setInspectorDOMStorageAgent(this);
    6658}
    6759
    6860InspectorDOMStorageAgent::~InspectorDOMStorageAgent()
    6961{
    70     DOMStorageResourcesMap::iterator domStorageEnd = m_resources->m_map.end();
    71     for (DOMStorageResourcesMap::iterator it = m_resources->m_map.begin(); it != domStorageEnd; ++it)
    72         it->second->unbind();
     62    m_instrumentingAgents->setInspectorDOMStorageAgent(0);
     63    m_instrumentingAgents = 0;
    7364}
    7465
    75 PassOwnPtr<InspectorOfflineResourcesBase> InspectorDOMStorageAgent::createStorage()
     66void InspectorDOMStorageAgent::setFrontend(InspectorFrontend* frontend)
    7667{
    77     return adoptPtr(new Resources());
     68    m_frontend = frontend;
     69    DOMStorageResourcesMap::iterator resourcesEnd = m_resources.end();
     70    for (DOMStorageResourcesMap::iterator it = m_resources.begin(); it != resourcesEnd; ++it)
     71        it->second->bind(m_frontend);
     72}
     73
     74void InspectorDOMStorageAgent::clearFrontend()
     75{
     76    DOMStorageResourcesMap::iterator domStorageEnd = m_resources.end();
     77    for (DOMStorageResourcesMap::iterator it = m_resources.begin(); it != domStorageEnd; ++it)
     78        it->second->unbind();
     79    m_frontend = 0;
    7880}
    7981
     
    124126    bool isLocalStorage = (frame->domWindow()->localStorage(ec) == storage && !ec);
    125127    long storageResourceId = 0;
    126     DOMStorageResourcesMap::iterator domStorageEnd = m_resources->m_map.end();
    127     for (DOMStorageResourcesMap::iterator it = m_resources->m_map.begin(); it != domStorageEnd; ++it) {
     128    DOMStorageResourcesMap::iterator domStorageEnd = m_resources.end();
     129    for (DOMStorageResourcesMap::iterator it = m_resources.begin(); it != domStorageEnd; ++it) {
    128130        if (it->second->isSameHostAndType(frame, isLocalStorage)) {
    129131            storageResourceId = it->first;
     
    137139InspectorDOMStorageResource* InspectorDOMStorageAgent::getDOMStorageResourceForId(long storageId)
    138140{
    139     DOMStorageResourcesMap::iterator it = m_resources->m_map.find(storageId);
    140     if (it == m_resources->m_map.end())
     141    DOMStorageResourcesMap::iterator it = m_resources.find(storageId);
     142    if (it == m_resources.end())
    141143        return 0;
    142144    return it->second.get();
    143145}
    144146
    145 void InspectorDOMStorageAgent::didUseDOMStorage(InspectorAgent* inspectorAgent, StorageArea* storageArea, bool isLocalStorage, Frame* frame)
     147void InspectorDOMStorageAgent::didUseDOMStorage(StorageArea* storageArea, bool isLocalStorage, Frame* frame)
    146148{
    147     if (!inspectorAgent->enabled())
    148         return;
    149 
    150     Resources* resources = static_cast<Resources*>(inspectorAgent->domStorageAgentResources());
    151     DOMStorageResourcesMap::iterator domStorageEnd = resources->m_map.end();
    152     for (DOMStorageResourcesMap::iterator it = resources->m_map.begin(); it != domStorageEnd; ++it)
     149    DOMStorageResourcesMap::iterator domStorageEnd = m_resources.end();
     150    for (DOMStorageResourcesMap::iterator it = m_resources.begin(); it != domStorageEnd; ++it)
    153151        if (it->second->isSameHostAndType(frame, isLocalStorage))
    154152            return;
     
    157155    RefPtr<InspectorDOMStorageResource> resource = InspectorDOMStorageResource::create(domStorage.get(), isLocalStorage, frame);
    158156
    159     resources->m_map.set(resource->id(), resource);
     157    m_resources.set(resource->id(), resource);
    160158
    161159    // Resources are only bound while visible.
    162     if (inspectorAgent->frontend())
    163         resource->bind(inspectorAgent->frontend());
     160    if (m_frontend)
     161        resource->bind(m_frontend);
    164162}
    165163
    166 void InspectorDOMStorageAgent::clear(InspectorAgent* inspectorAgent)
     164void InspectorDOMStorageAgent::clearResources()
    167165{
    168     static_cast<Resources*>(inspectorAgent->domStorageAgentResources())->m_map.clear();
     166    m_resources.clear();
    169167}
    170168
  • trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h

    r78692 r79303  
    3737
    3838class Frame;
    39 class InspectorAgent;
    4039class InspectorArray;
    4140class InspectorDOMStorageResource;
    4241class InspectorFrontend;
    43 class InspectorOfflineResourcesBase;
     42class InstrumentingAgents;
    4443class Storage;
    4544class StorageArea;
     
    4746class InspectorDOMStorageAgent {
    4847public:
    49     class Resources;
     48    static PassOwnPtr<InspectorDOMStorageAgent> create(InstrumentingAgents* instrumentingAgents)
     49    {
     50        return adoptPtr(new InspectorDOMStorageAgent(instrumentingAgents));
     51    }
     52    ~InspectorDOMStorageAgent();
    5053
    51     static PassOwnPtr<InspectorDOMStorageAgent> create(InspectorOfflineResourcesBase* domStorageResources, InspectorFrontend* frontend)
    52     {
    53         return adoptPtr(new InspectorDOMStorageAgent(domStorageResources, frontend));
    54     }
     54    void setFrontend(InspectorFrontend*);
     55    void clearFrontend();
    5556
    56     static PassOwnPtr<InspectorOfflineResourcesBase> createStorage();
    57     static void clear(InspectorAgent*);
    58 
    59     virtual ~InspectorDOMStorageAgent();
     57    void clearResources();
    6058
    6159    // Called from the front-end.
     
    6866
    6967    // Called from InspectorInstrumentation
    70     static void didUseDOMStorage(InspectorAgent*, StorageArea*, bool isLocalStorage, Frame*);
     68    void didUseDOMStorage(StorageArea*, bool isLocalStorage, Frame*);
    7169
    7270private:
    73     InspectorDOMStorageAgent(InspectorOfflineResourcesBase*, InspectorFrontend*);
     71    explicit InspectorDOMStorageAgent(InstrumentingAgents*);
    7472
    7573    InspectorDOMStorageResource* getDOMStorageResourceForId(long storageId);
    7674
    77     Resources* m_resources;
     75    InstrumentingAgents* m_instrumentingAgents;
     76    typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap;
     77    DOMStorageResourcesMap m_resources;
    7878    InspectorFrontend* m_frontend;
    7979};
  • trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp

    r78692 r79303  
    3535#include "Database.h"
    3636#include "ExceptionCode.h"
    37 #include "InspectorAgent.h"
    3837#include "InspectorDatabaseResource.h"
    3938#include "InspectorFrontend.h"
    4039#include "InspectorValues.h"
     40#include "InstrumentingAgents.h"
    4141#include "SQLError.h"
    4242#include "SQLStatementCallback.h"
     
    219219} // namespace
    220220
    221 typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
    222 
    223 class InspectorDatabaseAgent::Resources : public InspectorOfflineResourcesBase {
    224 public:
    225     DatabaseResourcesMap m_map;
    226 };
    227 
    228 void InspectorDatabaseAgent::didOpenDatabase(InspectorAgent* inspectorAgent, PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
    229 {
    230     if (!inspectorAgent->enabled())
    231         return;
    232 
     221void InspectorDatabaseAgent::didOpenDatabase(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
     222{
    233223    RefPtr<InspectorDatabaseResource> resource = InspectorDatabaseResource::create(database, domain, name, version);
    234 
    235     Resources* resources = static_cast<Resources*>(inspectorAgent->databaseAgentResources());
    236     ASSERT(resources);
    237     resources->m_map.set(resource->id(), resource);
    238 
     224    m_resources.set(resource->id(), resource);
    239225    // Resources are only bound while visible.
    240     if (InspectorFrontend* frontend = inspectorAgent->frontend())
    241         resource->bind(frontend);
    242 }
    243 
    244 void InspectorDatabaseAgent::clear(InspectorAgent* inspectorAgent)
    245 {
    246     static_cast<Resources*>(inspectorAgent->databaseAgentResources())->m_map.clear();
    247 }
    248 
    249 
    250 InspectorDatabaseAgent::InspectorDatabaseAgent(InspectorOfflineResourcesBase* resources, InspectorFrontend* frontend)
    251     : m_resources(static_cast<Resources*>(resources))
    252     , m_frontendProvider(FrontendProvider::create(frontend))
    253 {
    254     ASSERT(resources);
    255     DatabaseResourcesMap::iterator databasesEnd = m_resources->m_map.end();
    256     for (DatabaseResourcesMap::iterator it = m_resources->m_map.begin(); it != databasesEnd; ++it)
    257         it->second->bind(m_frontendProvider->frontend());
     226    if (m_frontendProvider)
     227        resource->bind(m_frontendProvider->frontend());
     228}
     229
     230void InspectorDatabaseAgent::clearResources()
     231{
     232    m_resources.clear();
     233}
     234
     235InspectorDatabaseAgent::InspectorDatabaseAgent(InstrumentingAgents* instrumentingAgents)
     236    : m_instrumentingAgents(instrumentingAgents)
     237{
     238    m_instrumentingAgents->setInspectorDatabaseAgent(this);
    258239}
    259240
    260241InspectorDatabaseAgent::~InspectorDatabaseAgent()
    261242{
     243    if (m_frontendProvider)
     244        clearFrontend();
     245    m_instrumentingAgents->setInspectorDatabaseAgent(0);
     246}
     247
     248void InspectorDatabaseAgent::setFrontend(InspectorFrontend* frontend)
     249{
     250    m_frontendProvider = FrontendProvider::create(frontend);
     251    DatabaseResourcesMap::iterator databasesEnd = m_resources.end();
     252    for (DatabaseResourcesMap::iterator it = m_resources.begin(); it != databasesEnd; ++it)
     253        it->second->bind(frontend);
     254}
     255
     256void InspectorDatabaseAgent::clearFrontend()
     257{
    262258    m_frontendProvider->clearFrontend();
    263 }
    264 
    265 PassOwnPtr<InspectorOfflineResourcesBase> InspectorDatabaseAgent::createStorage()
    266 {
    267     return adoptPtr(new Resources());
     259    m_frontendProvider.clear();
    268260}
    269261
     
    297289Database* InspectorDatabaseAgent::databaseForId(long databaseId)
    298290{
    299     DatabaseResourcesMap::iterator it = m_resources->m_map.find(databaseId);
    300     if (it == m_resources->m_map.end())
     291    DatabaseResourcesMap::iterator it = m_resources.find(databaseId);
     292    if (it == m_resources.end())
    301293        return 0;
    302294    return it->second->database();
     
    305297void InspectorDatabaseAgent::selectDatabase(Database* database)
    306298{
    307     if (!m_frontendProvider->frontend())
     299    if (!m_frontendProvider)
    308300        return;
    309301
    310     for (DatabaseResourcesMap::iterator it = m_resources->m_map.begin(); it != m_resources->m_map.end(); ++it) {
     302    for (DatabaseResourcesMap::iterator it = m_resources.begin(); it != m_resources.end(); ++it) {
    311303        if (it->second->database() == database) {
    312304            m_frontendProvider->frontend()->selectDatabase(it->first);
  • trunk/Source/WebCore/inspector/InspectorDatabaseAgent.h

    r78692 r79303  
    3737
    3838class Database;
    39 class InspectorAgent;
    4039class InspectorArray;
     40class InspectorDatabaseResource;
    4141class InspectorFrontend;
    42 class InspectorOfflineResourcesBase;
     42class InstrumentingAgents;
    4343
    4444class InspectorDatabaseAgent {
    4545public:
    4646    class FrontendProvider;
    47     class Resources;
    4847
    49     static PassOwnPtr<InspectorDatabaseAgent> create(InspectorOfflineResourcesBase* storage, InspectorFrontend* frontend)
     48    static PassOwnPtr<InspectorDatabaseAgent> create(InstrumentingAgents* instrumentingAgents)
    5049    {
    51         return adoptPtr(new InspectorDatabaseAgent(storage, frontend));
     50        return adoptPtr(new InspectorDatabaseAgent(instrumentingAgents));
    5251    }
     52    ~InspectorDatabaseAgent();
    5353
    54     static PassOwnPtr<InspectorOfflineResourcesBase> createStorage();
    55     static void clear(InspectorAgent*);
     54    void setFrontend(InspectorFrontend*);
     55    void clearFrontend();
    5656
    57     virtual ~InspectorDatabaseAgent();
     57    void clearResources();
    5858
    5959    // Called from the front-end.
     
    6565    void selectDatabase(Database* database);
    6666
    67     static void didOpenDatabase(InspectorAgent*, PassRefPtr<Database>, const String& domain, const String& name, const String& version);
     67    void didOpenDatabase(PassRefPtr<Database>, const String& domain, const String& name, const String& version);
    6868private:
    69     InspectorDatabaseAgent(InspectorOfflineResourcesBase*, InspectorFrontend*);
     69    explicit InspectorDatabaseAgent(InstrumentingAgents*);
    7070
    71     Resources* m_resources;
     71    InstrumentingAgents* m_instrumentingAgents;
     72    typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
     73    DatabaseResourcesMap m_resources;
    7274    RefPtr<FrontendProvider> m_frontendProvider;
    7375};
  • trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp

    r79009 r79303  
    5050#include "InspectorResourceAgent.h"
    5151#include "InspectorTimelineAgent.h"
     52#include "InstrumentingAgents.h"
    5253#include "ScriptArguments.h"
    5354#include "ScriptCallStack.h"
     
    594595void InspectorInstrumentation::didOpenDatabaseImpl(InspectorAgent* inspectorAgent, PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
    595596{
    596     InspectorDatabaseAgent::didOpenDatabase(inspectorAgent, database, domain, name, version);
     597    if (!inspectorAgent->enabled())
     598        return;
     599    if (InspectorDatabaseAgent* dbAgent = inspectorAgent->instrumentingAgents()->inspectorDatabaseAgent())
     600        dbAgent->didOpenDatabase(database, domain, name, version);
    597601}
    598602#endif
     
    601605void InspectorInstrumentation::didUseDOMStorageImpl(InspectorAgent* inspectorAgent, StorageArea* storageArea, bool isLocalStorage, Frame* frame)
    602606{
    603     InspectorDOMStorageAgent::didUseDOMStorage(inspectorAgent, storageArea, isLocalStorage, frame);
     607    if (!inspectorAgent->enabled())
     608        return;
     609    if (InspectorDOMStorageAgent* domStorageAgent = inspectorAgent->instrumentingAgents()->inspectorDOMStorageAgent())
     610        domStorageAgent->didUseDOMStorage(storageArea, isLocalStorage, frame);
    604611}
    605612#endif
Note: See TracChangeset for help on using the changeset viewer.