Index: components/scheduler/renderer/web_frame_scheduler_impl.cc |
diff --git a/components/scheduler/renderer/web_frame_scheduler_impl.cc b/components/scheduler/renderer/web_frame_scheduler_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6e154e32f3cc79c6d4df0c85794b6d240de6dbb4 |
--- /dev/null |
+++ b/components/scheduler/renderer/web_frame_scheduler_impl.cc |
@@ -0,0 +1,68 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "components/scheduler/renderer/web_frame_scheduler_impl.h" |
+ |
+#include "components/scheduler/child/web_task_runner_impl.h" |
+#include "components/scheduler/renderer/renderer_scheduler.h" |
+#include "components/scheduler/renderer/web_page_scheduler_impl.h" |
+#include "third_party/WebKit/public/platform/WebString.h" |
+#include "third_party/WebKit/public/web/WebSecurityOrigin.h" |
+ |
+namespace scheduler { |
+ |
+WebFrameSchedulerImpl::WebFrameSchedulerImpl( |
+ RendererScheduler* render_scheduler, |
+ WebPageSchedulerImpl* parent_page_scheduler) |
+ : render_scheduler_(render_scheduler), |
+ parent_page_scheduler_(parent_page_scheduler), |
+ visible_(true) {} |
+ |
+WebFrameSchedulerImpl::~WebFrameSchedulerImpl() { |
+ if (loading_task_queue_.get()) |
+ loading_task_queue_->UnregisterTaskQueue(); |
+ |
+ if (timer_task_queue_.get()) |
+ timer_task_queue_->UnregisterTaskQueue(); |
+ |
+ parent_page_scheduler_->Unregister(this); |
+} |
+ |
+void WebFrameSchedulerImpl::setFrameVisible(bool visible) { |
+ visible_ = visible; |
+ // TODO(alexclarke): Do something with this flag. |
+} |
+ |
+blink::WebTaskRunner* WebFrameSchedulerImpl::loadingTaskRunner() { |
+ if (!loading_web_task_runner_.get()) { |
+ loading_task_queue_ = |
+ render_scheduler_->NewLoadingTaskRunner("frame_loading_tq"); |
+ loading_task_queue_->SetOrigin(origin_); |
+ loading_web_task_runner_.reset(new WebTaskRunnerImpl(loading_task_queue_)); |
+ } |
+ return loading_web_task_runner_.get(); |
+} |
+ |
+blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() { |
+ if (!timer_web_task_runner_.get()) { |
+ timer_task_queue_ = render_scheduler_->NewTimerTaskRunner("frame_timer_tq"); |
+ timer_task_queue_->SetOrigin(origin_); |
+ timer_web_task_runner_.reset(new WebTaskRunnerImpl(timer_task_queue_)); |
+ } |
+ return timer_web_task_runner_.get(); |
+} |
+ |
+void WebFrameSchedulerImpl::setFrameOrigin( |
+ const blink::WebSecurityOrigin* origin) { |
+ DCHECK(origin); |
+ origin_ = origin->toString().utf8(); |
+ |
+ if (loading_task_queue_.get()) |
+ loading_task_queue_->SetOrigin(origin_); |
+ |
+ if (timer_task_queue_.get()) |
+ timer_task_queue_->SetOrigin(origin_); |
+} |
+ |
+} // namespace scheduler |