InspectorDatabaseAgent.h [plain text]
#ifndef InspectorDatabaseAgent_h
#define InspectorDatabaseAgent_h
#if ENABLE(INSPECTOR) && ENABLE(SQL_DATABASE)
#include "InspectorWebAgentBase.h"
#include "InspectorWebBackendDispatchers.h"
#include "InspectorWebFrontendDispatchers.h"
#include <wtf/HashMap.h>
#include <wtf/text/WTFString.h>
namespace Inspector {
class InspectorArray;
}
namespace WebCore {
class Database;
class InspectorDatabaseResource;
class InstrumentingAgents;
typedef String ErrorString;
class InspectorDatabaseAgent : public InspectorAgentBase, public Inspector::InspectorDatabaseBackendDispatcherHandler {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit InspectorDatabaseAgent(InstrumentingAgents*);
~InspectorDatabaseAgent();
virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
virtual void willDestroyFrontendAndBackend(Inspector::InspectorDisconnectReason) override;
void clearResources();
virtual void enable(ErrorString*) override;
virtual void disable(ErrorString*) override;
virtual void getDatabaseTableNames(ErrorString*, const String& databaseId, RefPtr<Inspector::TypeBuilder::Array<String>>& names) override;
virtual void executeSQL(ErrorString*, const String& databaseId, const String& query, PassRefPtr<ExecuteSQLCallback>) override;
String databaseId(Database*);
void didOpenDatabase(PassRefPtr<Database>, const String& domain, const String& name, const String& version);
private:
Database* databaseForId(const String& databaseId);
InspectorDatabaseResource* findByFileName(const String& fileName);
std::unique_ptr<Inspector::InspectorDatabaseFrontendDispatcher> m_frontendDispatcher;
RefPtr<Inspector::InspectorDatabaseBackendDispatcher> m_backendDispatcher;
typedef HashMap<String, RefPtr<InspectorDatabaseResource>> DatabaseResourcesMap;
DatabaseResourcesMap m_resources;
bool m_enabled;
};
}
#endif // ENABLE(INSPECTOR) && ENABLE(SQL_DATABASE)
#endif // !defined(InspectorDatabaseAgent_h)