Commit 602603cd authored by Johannes Henkel's avatar Johannes Henkel Committed by Commit Bot

Port InspectorDatabaseAgent to InspectorAgentState fields.

There's just one field for the enabled bit so this one's trivial
(with an InnerEnable() function).

For reference the PR that introduced the new
InspectorSessionState / InspectorAgentState / Fields
was https://chromium-review.googlesource.com/c/chromium/src/+/1149201.
We're migrating things from state_ to this new mechanism,
which allows incremental updates to flow back to the browser
process.

Change-Id: I25b61b207354dee8eeeb9718dd5bbf205f769eea
Reviewed-on: https://chromium-review.googlesource.com/1159737Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Reviewed-by: default avatarVictor Costan <pwnall@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580275}
parent 2a9c0de6
......@@ -48,14 +48,9 @@ typedef blink::protocol::Database::Backend::ExecuteSQLCallback
ExecuteSQLCallback;
namespace blink {
using protocol::Maybe;
using protocol::Response;
namespace DatabaseAgentState {
static const char kDatabaseAgentEnabled[] = "databaseAgentEnabled";
};
namespace {
class ExecuteSQLCallbackWrapper : public RefCounted<ExecuteSQLCallbackWrapper> {
......@@ -230,7 +225,7 @@ void InspectorDatabaseAgent::DidOpenDatabase(blink::Database* database,
InspectorDatabaseResource::Create(database, domain, name, version);
resources_.Set(resource->Id(), resource);
// Resources are only bound while visible.
DCHECK(enabled_);
DCHECK(enabled_.Get());
DCHECK(GetFrontend());
resource->Bind(GetFrontend());
}
......@@ -244,29 +239,31 @@ void InspectorDatabaseAgent::DidCommitLoadForLocalFrame(LocalFrame* frame) {
}
InspectorDatabaseAgent::InspectorDatabaseAgent(Page* page)
: page_(page), enabled_(false) {}
: page_(page), enabled_(&agent_state_, /*default_value=*/false) {}
InspectorDatabaseAgent::~InspectorDatabaseAgent() = default;
Response InspectorDatabaseAgent::enable() {
if (enabled_)
return Response::OK();
enabled_ = true;
state_->setBoolean(DatabaseAgentState::kDatabaseAgentEnabled, enabled_);
void InspectorDatabaseAgent::InnerEnable() {
if (DatabaseClient* client = DatabaseClient::FromPage(page_))
client->SetInspectorAgent(this);
DatabaseTracker::Tracker().ForEachOpenDatabaseInPage(
page_,
WTF::BindRepeating(&InspectorDatabaseAgent::RegisterDatabaseOnCreation,
WrapPersistent(this)));
}
Response InspectorDatabaseAgent::enable() {
if (enabled_.Get())
return Response::OK();
enabled_.Set(true);
InnerEnable();
return Response::OK();
}
Response InspectorDatabaseAgent::disable() {
if (!enabled_)
if (!enabled_.Get())
return Response::OK();
enabled_ = false;
state_->setBoolean(DatabaseAgentState::kDatabaseAgentEnabled, enabled_);
enabled_.Set(false);
if (DatabaseClient* client = DatabaseClient::FromPage(page_))
client->SetInspectorAgent(nullptr);
resources_.clear();
......@@ -274,16 +271,14 @@ Response InspectorDatabaseAgent::disable() {
}
void InspectorDatabaseAgent::Restore() {
if (state_->booleanProperty(DatabaseAgentState::kDatabaseAgentEnabled,
false)) {
enable();
}
if (enabled_.Get())
InnerEnable();
}
Response InspectorDatabaseAgent::getDatabaseTableNames(
const String& database_id,
std::unique_ptr<protocol::Array<String>>* names) {
if (!enabled_)
if (!enabled_.Get())
return Response::Error("Database agent is not enabled");
*names = protocol::Array<String>::create();
......@@ -305,7 +300,7 @@ void InspectorDatabaseAgent::executeSQL(
std::unique_ptr<ExecuteSQLCallback> request_callback =
std::move(prp_request_callback);
if (!enabled_) {
if (!enabled_.Get()) {
request_callback->sendFailure(
Response::Error("Database agent is not enabled"));
return;
......
......@@ -74,6 +74,7 @@ class MODULES_EXPORT InspectorDatabaseAgent final
private:
explicit InspectorDatabaseAgent(Page*);
void InnerEnable();
void RegisterDatabaseOnCreation(blink::Database*);
blink::Database* DatabaseForId(const String& database_id);
......@@ -83,7 +84,7 @@ class MODULES_EXPORT InspectorDatabaseAgent final
typedef HeapHashMap<String, Member<InspectorDatabaseResource>>
DatabaseResourcesHeapMap;
DatabaseResourcesHeapMap resources_;
bool enabled_;
InspectorAgentState::Boolean enabled_;
};
} // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment