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

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

Issue 1478313002: Add a flag disable background timer alignment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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" 8 #include "components/scheduler/base/virtual_time_domain.h"
9 #include "components/scheduler/child/scheduler_tqm_delegate.h" 9 #include "components/scheduler/child/scheduler_tqm_delegate.h"
10 #include "components/scheduler/renderer/renderer_scheduler_impl.h" 10 #include "components/scheduler/renderer/renderer_scheduler_impl.h"
11 #include "components/scheduler/renderer/web_frame_scheduler_impl.h" 11 #include "components/scheduler/renderer/web_frame_scheduler_impl.h"
12 #include "third_party/WebKit/public/platform/WebFrameScheduler.h" 12 #include "third_party/WebKit/public/platform/WebFrameScheduler.h"
13 13
14 namespace scheduler { 14 namespace scheduler {
15 15
16 WebViewSchedulerImpl::WebViewSchedulerImpl( 16 WebViewSchedulerImpl::WebViewSchedulerImpl(
17 blink::WebView* web_view, 17 blink::WebView* web_view,
18 RendererSchedulerImpl* renderer_scheduler) 18 RendererSchedulerImpl* renderer_scheduler,
19 bool disable_background_timer_throttling)
19 : web_view_(web_view), 20 : web_view_(web_view),
20 renderer_scheduler_(renderer_scheduler), 21 renderer_scheduler_(renderer_scheduler),
21 page_in_background_(false) {} 22 page_in_background_(false),
23 disable_background_timer_throttling_(
24 disable_background_timer_throttling) {}
22 25
23 WebViewSchedulerImpl::~WebViewSchedulerImpl() { 26 WebViewSchedulerImpl::~WebViewSchedulerImpl() {
24 // TODO(alexclarke): Find out why we can't rely on the web view outliving the 27 // TODO(alexclarke): Find out why we can't rely on the web view outliving the
25 // frame. 28 // frame.
26 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) { 29 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) {
27 frame_scheduler->DetachFromWebViewScheduler(); 30 frame_scheduler->DetachFromWebViewScheduler();
28 } 31 }
29 } 32 }
30 33
31 void WebViewSchedulerImpl::setPageInBackground(bool page_in_background) { 34 void WebViewSchedulerImpl::setPageInBackground(bool page_in_background) {
32 if (page_in_background_ == page_in_background) 35 if (disable_background_timer_throttling_ ||
36 page_in_background_ == page_in_background)
33 return; 37 return;
34 38
35 page_in_background_ = page_in_background; 39 page_in_background_ = page_in_background;
36 40
37 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) { 41 for (WebFrameSchedulerImpl* frame_scheduler : frame_schedulers_) {
38 frame_scheduler->SetPageInBackground(page_in_background_); 42 frame_scheduler->SetPageInBackground(page_in_background_);
39 } 43 }
40 } 44 }
41 45
42 scoped_ptr<WebFrameSchedulerImpl> 46 scoped_ptr<WebFrameSchedulerImpl>
43 WebViewSchedulerImpl::createWebFrameSchedulerImpl() { 47 WebViewSchedulerImpl::createWebFrameSchedulerImpl() {
44 scoped_ptr<WebFrameSchedulerImpl> frame_scheduler( 48 scoped_ptr<WebFrameSchedulerImpl> frame_scheduler(
45 new WebFrameSchedulerImpl(renderer_scheduler_, this)); 49 new WebFrameSchedulerImpl(renderer_scheduler_, this));
46 frame_scheduler->SetPageInBackground(page_in_background_); 50 frame_scheduler->SetPageInBackground(page_in_background_);
47 frame_schedulers_.insert(frame_scheduler.get()); 51 frame_schedulers_.insert(frame_scheduler.get());
48 return frame_scheduler.Pass(); 52 return frame_scheduler.Pass();
49 } 53 }
50 54
51 blink::WebPassOwnPtr<blink::WebFrameScheduler> 55 blink::WebPassOwnPtr<blink::WebFrameScheduler>
52 WebViewSchedulerImpl::createFrameScheduler() { 56 WebViewSchedulerImpl::createFrameScheduler() {
53 return blink::adoptWebPtr(createWebFrameSchedulerImpl().release()); 57 return blink::adoptWebPtr(createWebFrameSchedulerImpl().release());
54 } 58 }
55 59
56 void WebViewSchedulerImpl::Unregister(WebFrameSchedulerImpl* frame_scheduler) { 60 void WebViewSchedulerImpl::Unregister(WebFrameSchedulerImpl* frame_scheduler) {
57 DCHECK(frame_schedulers_.find(frame_scheduler) != frame_schedulers_.end()); 61 DCHECK(frame_schedulers_.find(frame_scheduler) != frame_schedulers_.end());
58 frame_schedulers_.erase(frame_scheduler); 62 frame_schedulers_.erase(frame_scheduler);
59 } 63 }
60 64
61 } // namespace scheduler 65 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698