InspectorDatabaseAgent.h [plain text]
#ifndef InspectorDatabaseAgent_h
#define InspectorDatabaseAgent_h
#include "InspectorWebAgentBase.h"
#include <inspector/InspectorBackendDispatchers.h>
#include <inspector/InspectorFrontendDispatchers.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 final : public InspectorAgentBase, public Inspector::DatabaseBackendDispatcherHandler {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit InspectorDatabaseAgent(InstrumentingAgents*);
virtual ~InspectorDatabaseAgent();
virtual void didCreateFrontendAndBackend(Inspector::FrontendChannel*, Inspector::BackendDispatcher*) override;
virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
void clearResources();
virtual void enable(ErrorString&) override;
virtual void disable(ErrorString&) override;
virtual void getDatabaseTableNames(ErrorString&, const String& databaseId, RefPtr<Inspector::Protocol::Array<String>>& names) override;
virtual void executeSQL(ErrorString&, const String& databaseId, const String& query, Ref<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::DatabaseFrontendDispatcher> m_frontendDispatcher;
RefPtr<Inspector::DatabaseBackendDispatcher> m_backendDispatcher;
typedef HashMap<String, RefPtr<InspectorDatabaseResource>> DatabaseResourcesMap;
DatabaseResourcesMap m_resources;
bool m_enabled;
};
}
#endif // !defined(InspectorDatabaseAgent_h)