Commit 96c3ce91 authored by Farah Charab's avatar Farah Charab Committed by Commit Bot

Scheduler: GetFrameScheduler should return FrameSchedulerImpl.

Changes so that MainThreadTaskQueue::GetFrameScheduler can return
FrameSchedulerImpl rather than FrameScheduler.

FakeFrameScheduler should inherit from FrameSchedulerImpl instead
of FrameScheduler.

Change-Id: Ic892ab9132c69d6f3b67f2671dbc09f9f1de2f6c
Reviewed-on: https://chromium-review.googlesource.com/1074648
Commit-Queue: Farah Charab <farahcharab@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#562470}
parent da771297
......@@ -116,23 +116,29 @@ FrameSchedulerImpl::FrameSchedulerImpl(
this,
&tracing_controller_,
YesNoStateToString),
page_frozen_for_tracing_(parent_page_scheduler_->IsFrozen(),
"FrameScheduler.PageFrozen",
this,
&tracing_controller_,
FrozenStateToString),
page_visibility_for_tracing_(parent_page_scheduler_->IsPageVisible()
? PageVisibilityState::kVisible
: PageVisibilityState::kHidden,
"FrameScheduler.PageVisibility",
this,
&tracing_controller_,
PageVisibilityStateToString),
page_keep_active_for_tracing_(parent_page_scheduler_->KeepActive(),
"FrameScheduler.KeepActive",
this,
&tracing_controller_,
KeepActiveStateToString) {}
page_frozen_for_tracing_(
parent_page_scheduler_ ? parent_page_scheduler_->IsFrozen() : true,
"FrameScheduler.PageFrozen",
this,
&tracing_controller_,
FrozenStateToString),
page_visibility_for_tracing_(
parent_page_scheduler_ && parent_page_scheduler_->IsPageVisible()
? PageVisibilityState::kVisible
: PageVisibilityState::kHidden,
"FrameScheduler.PageVisibility",
this,
&tracing_controller_,
PageVisibilityStateToString),
page_keep_active_for_tracing_(
parent_page_scheduler_ ? parent_page_scheduler_->KeepActive() : false,
"FrameScheduler.KeepActive",
this,
&tracing_controller_,
KeepActiveStateToString) {}
FrameSchedulerImpl::FrameSchedulerImpl()
: FrameSchedulerImpl(nullptr, nullptr, nullptr, FrameType::kSubframe) {}
namespace {
......
......@@ -94,6 +94,11 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler {
void SetPageKeepActiveForTracing(bool keep_active);
void SetPageFrozenForTracing(bool frozen);
protected:
// This will construct a subframe that is not linked to any main thread or
// page scheduler. Should be used only for testing purposes.
FrameSchedulerImpl();
private:
friend class PageSchedulerImpl;
friend class main_thread_scheduler_impl_unittest::MainThreadSchedulerImplTest;
......@@ -174,7 +179,6 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler {
page_visibility_for_tracing_;
TraceableState<bool, kTracingCategoryNameInfo> page_keep_active_for_tracing_;
DISALLOW_COPY_AND_ASSIGN(FrameSchedulerImpl);
};
......
......@@ -82,7 +82,7 @@ class MainThreadMetricsHelperTest : public testing::Test {
start + duration, base::nullopt);
}
void RunTask(FrameScheduler* scheduler,
void RunTask(FrameSchedulerImpl* scheduler,
base::TimeTicks start,
base::TimeDelta duration) {
DCHECK_LE(clock_.NowTicks(), start);
......
......@@ -172,7 +172,7 @@ void MainThreadTaskQueue::ClearReferencesToSchedulers() {
frame_scheduler_ = nullptr;
}
FrameScheduler* MainThreadTaskQueue::GetFrameScheduler() const {
FrameSchedulerImpl* MainThreadTaskQueue::GetFrameScheduler() const {
return frame_scheduler_;
}
......@@ -181,7 +181,7 @@ void MainThreadTaskQueue::DetachFromFrameScheduler() {
}
void MainThreadTaskQueue::SetFrameSchedulerForTest(
FrameScheduler* frame_scheduler) {
FrameSchedulerImpl* frame_scheduler) {
frame_scheduler_ = frame_scheduler;
}
......
......@@ -17,9 +17,6 @@ class TaskQueueManager;
} // namespace base
namespace blink {
class FrameScheduler;
namespace scheduler {
class MainThreadSchedulerImpl;
......@@ -157,7 +154,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue
base::sequence_manager::TaskQueue::Spec spec;
base::Optional<base::sequence_manager::TaskQueue::QueuePriority>
fixed_priority;
FrameScheduler* frame_scheduler;
FrameSchedulerImpl* frame_scheduler;
bool can_be_deferred;
bool can_be_throttled;
bool can_be_paused;
......@@ -202,11 +199,11 @@ class PLATFORM_EXPORT MainThreadTaskQueue
// Override base method to notify MainThreadScheduler about shutdown queue.
void ShutdownTaskQueue() override;
FrameScheduler* GetFrameScheduler() const;
FrameSchedulerImpl* GetFrameScheduler() const;
void DetachFromFrameScheduler();
protected:
void SetFrameSchedulerForTest(FrameScheduler* frame);
void SetFrameSchedulerForTest(FrameSchedulerImpl* frame_scheduler);
MainThreadTaskQueue(
std::unique_ptr<base::sequence_manager::internal::TaskQueueImpl> impl,
......@@ -236,7 +233,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue
// Needed to notify renderer scheduler about completed tasks.
MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED
FrameScheduler* frame_scheduler_; // NOT OWNED
FrameSchedulerImpl* frame_scheduler_; // NOT OWNED
DISALLOW_COPY_AND_ASSIGN(MainThreadTaskQueue);
};
......
......@@ -28,7 +28,7 @@ class MainThreadTaskQueueForTest : public MainThreadTaskQueue {
};
// A dummy FrameScheduler for tests.
class FakeFrameScheduler : public FrameScheduler {
class FakeFrameScheduler : public FrameSchedulerImpl {
public:
FakeFrameScheduler()
: page_scheduler_(nullptr),
......
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