Commit f6e1712e authored by Alexander Timin's avatar Alexander Timin Committed by Commit Bot

[bfcache] Track presence of IndexedDB connection for bfcache metrics

In addition to tracking of outstanding IndexedDB transactions, also
track database transactions.

R=haraken@chromium.org,dmurph@chromium.org
BUG=966056

Change-Id: I4c426e3866c74a36b3dc2be1a62c52cb5a7f77b9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1625120
Commit-Queue: Alexander Timin <altimin@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarDaniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#662457}
parent df551f09
......@@ -59,7 +59,9 @@ enum class WebSchedulerTrackedFeature {
kBroadcastChannel = 27,
kMaxValue = kBroadcastChannel
kIndexedDBConnection = 28,
kMaxValue = kIndexedDBConnection
};
} // namespace scheduler
......
......@@ -101,7 +101,13 @@ IDBDatabase::IDBDatabase(ExecutionContext* context,
event_queue_(
MakeGarbageCollected<EventQueue>(context, TaskType::kDatabaseAccess)),
database_callbacks_(callbacks),
isolate_(isolate) {
isolate_(isolate),
feature_handle_for_scheduler_(
context
? context->GetScheduler()->RegisterFeature(
SchedulingPolicy::Feature::kIndexedDBConnection,
{SchedulingPolicy::RecordMetricsForBackForwardCache()})
: FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle()) {
database_callbacks_->Connect(this);
}
......@@ -436,6 +442,7 @@ void IDBDatabase::close() {
return;
close_pending_ = true;
feature_handle_for_scheduler_.reset();
if (transactions_.IsEmpty())
CloseConnection();
......
......@@ -46,6 +46,7 @@
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
#include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h"
namespace blink {
......@@ -194,6 +195,9 @@ class MODULES_EXPORT IDBDatabase final
// Maintain the isolate so that all externally allocated memory can be
// registered against it.
v8::Isolate* isolate_;
FrameOrWorkerScheduler::SchedulingAffectingFeatureHandle
feature_handle_for_scheduler_;
};
} // namespace blink
......
......@@ -17,6 +17,7 @@ bool SchedulingPolicy::IsFeatureSticky(SchedulingPolicy::Feature feature) {
case Feature::kOutstandingIndexedDBTransaction:
case Feature::kHasScriptableFramesInMultipleTabs:
case Feature::kBroadcastChannel:
case Feature::kIndexedDBConnection:
return false;
case Feature::kMainResourceHasCacheControlNoStore:
case Feature::kMainResourceHasCacheControlNoCache:
......
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