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

Side by Side Diff: content/browser/renderer_host/renderer_frame_manager.cc

Issue 43193002: Aura/ÜC: Drop frames on background tabs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: CONTENT_EXPORT Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/renderer_host/renderer_frame_manager.h"
6
7 #include "base/logging.h"
8 #include "base/sys_info.h"
9
10 namespace content {
11
12 RendererFrameManager* RendererFrameManager::GetInstance() {
13 return Singleton<RendererFrameManager>::get();
14 }
15
16 void RendererFrameManager::AddFrame(RendererFrameManagerClient* frame,
17 bool visible) {
18 RemoveFrame(frame);
19 if (visible)
20 visible_frames_.insert(frame);
21 else
22 hidden_frames_.push_front(frame);
23 CullHiddenFrames();
24 }
25
26 void RendererFrameManager::RemoveFrame(RendererFrameManagerClient* frame) {
27 visible_frames_.erase(frame);
28 hidden_frames_.remove(frame);
29 }
30
31 void RendererFrameManager::SetFrameVisibility(RendererFrameManagerClient* frame,
32 bool visible) {
33 if (visible) {
34 hidden_frames_.remove(frame);
35 visible_frames_.insert(frame);
36 } else {
37 visible_frames_.erase(frame);
38 hidden_frames_.push_front(frame);
39 CullHiddenFrames();
40 }
41 }
42
43 RendererFrameManager::RendererFrameManager()
44 : max_number_of_saved_frames_(
45 std::min(5, 2 + (base::SysInfo::AmountOfPhysicalMemoryMB() / 256))) {}
46
47 RendererFrameManager::~RendererFrameManager() {}
48
49 void RendererFrameManager::CullHiddenFrames() {
50 while (!hidden_frames_.empty() &&
51 hidden_frames_.size() + visible_frames_.size() >
52 max_number_of_saved_frames()) {
53 size_t old_size = hidden_frames_.size();
54 // Should remove self from list.
55 hidden_frames_.back()->EvictCurrentFrame();
56 DCHECK_EQ(hidden_frames_.size() + 1, old_size);
57 }
58 }
59
60 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/renderer_frame_manager.h ('k') | content/browser/renderer_host/software_frame_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698