Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: components/scheduler/renderer/web_view_scheduler_impl.cc

Issue 1441073006: Move throttling of background timers into the renderer scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Last few changes Sami requested Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/scheduler/renderer/web_view_scheduler_impl.h" 5 #include "components/scheduler/renderer/web_view_scheduler_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "components/scheduler/base/virtual_time_domain.h"
9 #include "components/scheduler/child/scheduler_tqm_delegate.h"
10 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
8 #include "components/scheduler/renderer/web_frame_scheduler_impl.h" 11 #include "components/scheduler/renderer/web_frame_scheduler_impl.h"
9 #include "third_party/WebKit/public/platform/WebFrameScheduler.h" 12 #include "third_party/WebKit/public/platform/WebFrameScheduler.h"
10 13
11 namespace scheduler { 14 namespace scheduler {
12 15
13 WebViewSchedulerImpl::WebViewSchedulerImpl( 16 WebViewSchedulerImpl::WebViewSchedulerImpl(
14 blink::WebView* web_view, 17 blink::WebView* web_view,
15 RendererSchedulerImpl* renderer_scheduler) 18 RendererSchedulerImpl* renderer_scheduler)
16 : web_view_(web_view), 19 : web_view_(web_view),
17 renderer_scheduler_(renderer_scheduler), 20 renderer_scheduler_(renderer_scheduler),
18 background_(false) {} 21 page_in_background_(false) {}
19 22
20 WebViewSchedulerImpl::~WebViewSchedulerImpl() { 23 WebViewSchedulerImpl::~WebViewSchedulerImpl() {
21 // TODO(alexclarke): Find out why we can't rely on the web view outliving the 24 // TODO(alexclarke): Find out why we can't rely on the web view outliving the
22 // frame. 25 // frame.
23 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) { 26 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) {
24 frame_scheduler->DetachFromWebViewScheduler(); 27 frame_scheduler->DetachFromWebViewScheduler();
25 } 28 }
26 } 29 }
27 30
28 void WebViewSchedulerImpl::setPageInBackground(bool background) { 31 void WebViewSchedulerImpl::setPageInBackground(bool page_in_background) {
29 background_ = background; 32 if (page_in_background_ == page_in_background)
30 // TODO(alexclarke): Do something with this flag. 33 return;
34
35 page_in_background_ = page_in_background;
36
37 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) {
38 frame_scheduler->SetPageInBackground(page_in_background_);
39 }
40 }
41
42 scoped_ptr<WebFrameSchedulerImpl>
43 WebViewSchedulerImpl::createWebFrameSchedulerImpl() {
44 scoped_ptr<WebFrameSchedulerImpl> frame_scheduler(
45 new WebFrameSchedulerImpl(renderer_scheduler_, this));
46 frame_scheduler->SetPageInBackground(page_in_background_);
47 frame_schedulers_.insert(frame_scheduler.get());
48 return frame_scheduler.Pass();
31 } 49 }
32 50
33 blink::WebPassOwnPtr<blink::WebFrameScheduler> 51 blink::WebPassOwnPtr<blink::WebFrameScheduler>
34 WebViewSchedulerImpl::createFrameScheduler() { 52 WebViewSchedulerImpl::createFrameScheduler() {
35 scoped_ptr<WebFrameSchedulerImpl> frame_scheduler( 53 return blink::adoptWebPtr(createWebFrameSchedulerImpl().release());
36 new WebFrameSchedulerImpl(renderer_scheduler_, this));
37 frame_schedulers_.insert(frame_scheduler.get());
38 return blink::adoptWebPtr(frame_scheduler.release());
39 } 54 }
40 55
41 void WebViewSchedulerImpl::Unregister(WebFrameSchedulerImpl* frame_scheduler) { 56 void WebViewSchedulerImpl::Unregister(WebFrameSchedulerImpl* frame_scheduler) {
42 DCHECK(frame_schedulers_.find(frame_scheduler) != frame_schedulers_.end()); 57 DCHECK(frame_schedulers_.find(frame_scheduler) != frame_schedulers_.end());
43 frame_schedulers_.erase(frame_scheduler); 58 frame_schedulers_.erase(frame_scheduler);
44 } 59 }
45 60
46 } // namespace scheduler 61 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698