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( ...@@ -116,23 +116,29 @@ FrameSchedulerImpl::FrameSchedulerImpl(
this, this,
&tracing_controller_, &tracing_controller_,
YesNoStateToString), YesNoStateToString),
page_frozen_for_tracing_(parent_page_scheduler_->IsFrozen(), page_frozen_for_tracing_(
"FrameScheduler.PageFrozen", parent_page_scheduler_ ? parent_page_scheduler_->IsFrozen() : true,
this, "FrameScheduler.PageFrozen",
&tracing_controller_, this,
FrozenStateToString), &tracing_controller_,
page_visibility_for_tracing_(parent_page_scheduler_->IsPageVisible() FrozenStateToString),
? PageVisibilityState::kVisible page_visibility_for_tracing_(
: PageVisibilityState::kHidden, parent_page_scheduler_ && parent_page_scheduler_->IsPageVisible()
"FrameScheduler.PageVisibility", ? PageVisibilityState::kVisible
this, : PageVisibilityState::kHidden,
&tracing_controller_, "FrameScheduler.PageVisibility",
PageVisibilityStateToString), this,
page_keep_active_for_tracing_(parent_page_scheduler_->KeepActive(), &tracing_controller_,
"FrameScheduler.KeepActive", PageVisibilityStateToString),
this, page_keep_active_for_tracing_(
&tracing_controller_, parent_page_scheduler_ ? parent_page_scheduler_->KeepActive() : false,
KeepActiveStateToString) {} "FrameScheduler.KeepActive",
this,
&tracing_controller_,
KeepActiveStateToString) {}
FrameSchedulerImpl::FrameSchedulerImpl()
: FrameSchedulerImpl(nullptr, nullptr, nullptr, FrameType::kSubframe) {}
namespace { namespace {
......
...@@ -94,6 +94,11 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler { ...@@ -94,6 +94,11 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler {
void SetPageKeepActiveForTracing(bool keep_active); void SetPageKeepActiveForTracing(bool keep_active);
void SetPageFrozenForTracing(bool frozen); 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: private:
friend class PageSchedulerImpl; friend class PageSchedulerImpl;
friend class main_thread_scheduler_impl_unittest::MainThreadSchedulerImplTest; friend class main_thread_scheduler_impl_unittest::MainThreadSchedulerImplTest;
...@@ -174,7 +179,6 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler { ...@@ -174,7 +179,6 @@ class PLATFORM_EXPORT FrameSchedulerImpl : public FrameScheduler {
page_visibility_for_tracing_; page_visibility_for_tracing_;
TraceableState<bool, kTracingCategoryNameInfo> page_keep_active_for_tracing_; TraceableState<bool, kTracingCategoryNameInfo> page_keep_active_for_tracing_;
DISALLOW_COPY_AND_ASSIGN(FrameSchedulerImpl); DISALLOW_COPY_AND_ASSIGN(FrameSchedulerImpl);
}; };
......
...@@ -82,7 +82,7 @@ class MainThreadMetricsHelperTest : public testing::Test { ...@@ -82,7 +82,7 @@ class MainThreadMetricsHelperTest : public testing::Test {
start + duration, base::nullopt); start + duration, base::nullopt);
} }
void RunTask(FrameScheduler* scheduler, void RunTask(FrameSchedulerImpl* scheduler,
base::TimeTicks start, base::TimeTicks start,
base::TimeDelta duration) { base::TimeDelta duration) {
DCHECK_LE(clock_.NowTicks(), start); DCHECK_LE(clock_.NowTicks(), start);
......
...@@ -172,7 +172,7 @@ void MainThreadTaskQueue::ClearReferencesToSchedulers() { ...@@ -172,7 +172,7 @@ void MainThreadTaskQueue::ClearReferencesToSchedulers() {
frame_scheduler_ = nullptr; frame_scheduler_ = nullptr;
} }
FrameScheduler* MainThreadTaskQueue::GetFrameScheduler() const { FrameSchedulerImpl* MainThreadTaskQueue::GetFrameScheduler() const {
return frame_scheduler_; return frame_scheduler_;
} }
...@@ -181,7 +181,7 @@ void MainThreadTaskQueue::DetachFromFrameScheduler() { ...@@ -181,7 +181,7 @@ void MainThreadTaskQueue::DetachFromFrameScheduler() {
} }
void MainThreadTaskQueue::SetFrameSchedulerForTest( void MainThreadTaskQueue::SetFrameSchedulerForTest(
FrameScheduler* frame_scheduler) { FrameSchedulerImpl* frame_scheduler) {
frame_scheduler_ = frame_scheduler; frame_scheduler_ = frame_scheduler;
} }
......
...@@ -17,9 +17,6 @@ class TaskQueueManager; ...@@ -17,9 +17,6 @@ class TaskQueueManager;
} // namespace base } // namespace base
namespace blink { namespace blink {
class FrameScheduler;
namespace scheduler { namespace scheduler {
class MainThreadSchedulerImpl; class MainThreadSchedulerImpl;
...@@ -157,7 +154,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue ...@@ -157,7 +154,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue
base::sequence_manager::TaskQueue::Spec spec; base::sequence_manager::TaskQueue::Spec spec;
base::Optional<base::sequence_manager::TaskQueue::QueuePriority> base::Optional<base::sequence_manager::TaskQueue::QueuePriority>
fixed_priority; fixed_priority;
FrameScheduler* frame_scheduler; FrameSchedulerImpl* frame_scheduler;
bool can_be_deferred; bool can_be_deferred;
bool can_be_throttled; bool can_be_throttled;
bool can_be_paused; bool can_be_paused;
...@@ -202,11 +199,11 @@ class PLATFORM_EXPORT MainThreadTaskQueue ...@@ -202,11 +199,11 @@ class PLATFORM_EXPORT MainThreadTaskQueue
// Override base method to notify MainThreadScheduler about shutdown queue. // Override base method to notify MainThreadScheduler about shutdown queue.
void ShutdownTaskQueue() override; void ShutdownTaskQueue() override;
FrameScheduler* GetFrameScheduler() const; FrameSchedulerImpl* GetFrameScheduler() const;
void DetachFromFrameScheduler(); void DetachFromFrameScheduler();
protected: protected:
void SetFrameSchedulerForTest(FrameScheduler* frame); void SetFrameSchedulerForTest(FrameSchedulerImpl* frame_scheduler);
MainThreadTaskQueue( MainThreadTaskQueue(
std::unique_ptr<base::sequence_manager::internal::TaskQueueImpl> impl, std::unique_ptr<base::sequence_manager::internal::TaskQueueImpl> impl,
...@@ -236,7 +233,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue ...@@ -236,7 +233,7 @@ class PLATFORM_EXPORT MainThreadTaskQueue
// Needed to notify renderer scheduler about completed tasks. // Needed to notify renderer scheduler about completed tasks.
MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED MainThreadSchedulerImpl* main_thread_scheduler_; // NOT OWNED
FrameScheduler* frame_scheduler_; // NOT OWNED FrameSchedulerImpl* frame_scheduler_; // NOT OWNED
DISALLOW_COPY_AND_ASSIGN(MainThreadTaskQueue); DISALLOW_COPY_AND_ASSIGN(MainThreadTaskQueue);
}; };
......
...@@ -28,7 +28,7 @@ class MainThreadTaskQueueForTest : public MainThreadTaskQueue { ...@@ -28,7 +28,7 @@ class MainThreadTaskQueueForTest : public MainThreadTaskQueue {
}; };
// A dummy FrameScheduler for tests. // A dummy FrameScheduler for tests.
class FakeFrameScheduler : public FrameScheduler { class FakeFrameScheduler : public FrameSchedulerImpl {
public: public:
FakeFrameScheduler() FakeFrameScheduler()
: page_scheduler_(nullptr), : 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