Home | History | Annotate | Download | only in views
      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 
     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 
     30 AutoKeepAlive::~AutoKeepAlive() {
     31   if (keep_alive_available_)
     32     chrome::DecrementKeepAliveCount();
     33 }
     34