• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 "chrome/browser/ui/views/auto_keep_alive.h"
6 
7 #include "chrome/browser/lifetime/application_lifetime.h"
8 #include "chrome/browser/ui/host_desktop.h"
9 #include "ui/aura/window.h"
10 #include "ui/views/view_constants_aura.h"
11 
AutoKeepAlive(gfx::NativeWindow window)12 AutoKeepAlive::AutoKeepAlive(gfx::NativeWindow window)
13     : keep_alive_available_(false) {
14   // In case of aura we want default to be keep alive not available for ash
15   // because ash has keep alive set and we don't want additional keep alive
16   // count. If there is a |window|, use its root window's kDesktopRootWindow
17   // to test whether we are on desktop. Otherwise, use GetActiveDesktop().
18   if (window) {
19     gfx::NativeWindow native_window = window->GetRootWindow();
20     if (native_window->GetProperty(views::kDesktopRootWindow))
21       keep_alive_available_ = true;
22   } else if (chrome::GetActiveDesktop() != chrome::HOST_DESKTOP_TYPE_ASH) {
23     keep_alive_available_ = true;
24   }
25 
26   if (keep_alive_available_)
27     chrome::IncrementKeepAliveCount();
28 }
29 
~AutoKeepAlive()30 AutoKeepAlive::~AutoKeepAlive() {
31   if (keep_alive_available_)
32     chrome::DecrementKeepAliveCount();
33 }
34