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;
typedef String ErrorString;
class InspectorDatabaseAgent final : public InspectorAgentBase, public Inspector::DatabaseBackendDispatcherHandler {
WTF_MAKE_FAST_ALLOCATED;
public:
explicit InspectorDatabaseAgent(WebAgentContext&);
virtual ~InspectorDatabaseAgent();
void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
void clearResources();
void enable(ErrorString&) override;
void disable(ErrorString&) override;
void getDatabaseTableNames(ErrorString&, const String& databaseId, RefPtr<Inspector::Protocol::Array<String>>& names) override;
void executeSQL(ErrorString&, const String& databaseId, const String& query, Ref<ExecuteSQLCallback>&&) override;
String databaseId(Database*);
void didOpenDatabase(RefPtr<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 { false };
};
}
#endif // !defined(InspectorDatabaseAgent_h)