delegated_frame_evictor.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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/delegated_frame_evictor.h"
6
7#include "base/logging.h"
8
9namespace content {
10
11DelegatedFrameEvictor::DelegatedFrameEvictor(
12    DelegatedFrameEvictorClient* client)
13    : client_(client), has_frame_(false) {}
14
15DelegatedFrameEvictor::~DelegatedFrameEvictor() { DiscardedFrame(); }
16
17void DelegatedFrameEvictor::SwappedFrame(bool visible) {
18  has_frame_ = true;
19  RendererFrameManager::GetInstance()->AddFrame(this, visible);
20}
21
22void DelegatedFrameEvictor::DiscardedFrame() {
23  RendererFrameManager::GetInstance()->RemoveFrame(this);
24  has_frame_ = false;
25}
26
27void DelegatedFrameEvictor::SetVisible(bool visible) {
28  if (has_frame_) {
29    if (visible) {
30      RendererFrameManager::GetInstance()->LockFrame(this);
31    } else {
32      RendererFrameManager::GetInstance()->UnlockFrame(this);
33    }
34  }
35}
36
37void DelegatedFrameEvictor::LockFrame() {
38  DCHECK(has_frame_);
39  RendererFrameManager::GetInstance()->LockFrame(this);
40}
41
42void DelegatedFrameEvictor::UnlockFrame() {
43  DCHECK(has_frame_);
44  RendererFrameManager::GetInstance()->UnlockFrame(this);
45}
46
47void DelegatedFrameEvictor::EvictCurrentFrame() {
48  client_->EvictDelegatedFrame();
49}
50
51}  // namespace content
52