Home | History | Annotate | Download | only in apps
      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 #ifndef CHROME_BROWSER_UI_COCOA_APPS_QUIT_WITH_APPS_CONTROLLER_MAC_H_
      6 #define CHROME_BROWSER_UI_COCOA_APPS_QUIT_WITH_APPS_CONTROLLER_MAC_H_
      7 
      8 #include "base/macros.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "chrome/browser/notifications/notification.h"
     11 
     12 class PrefRegistrySimple;
     13 
     14 // QuitWithAppsController checks whether any apps are running and shows a
     15 // notification to quit all of them.
     16 class QuitWithAppsController : public NotificationDelegate {
     17  public:
     18   static const char kQuitWithAppsNotificationID[];
     19 
     20   QuitWithAppsController();
     21 
     22   // NotificationDelegate interface.
     23   virtual void Display() OVERRIDE;
     24   virtual void Error() OVERRIDE;
     25   virtual void Close(bool by_user) OVERRIDE;
     26   virtual void Click() OVERRIDE;
     27   virtual void ButtonClick(int button_index) OVERRIDE;
     28   virtual content::WebContents* GetWebContents() const OVERRIDE;
     29   virtual std::string id() const OVERRIDE;
     30 
     31   // Attempt to quit Chrome. This will display a notification and return false
     32   // if there are apps running.
     33   bool ShouldQuit();
     34 
     35   // Register prefs used by QuitWithAppsController.
     36   static void RegisterPrefs(PrefRegistrySimple* registry);
     37 
     38  private:
     39   virtual ~QuitWithAppsController();
     40 
     41   scoped_ptr<Notification> notification_;
     42 
     43   // Whether to suppress showing the notification for the rest of the session.
     44   bool suppress_for_session_;
     45 
     46   DISALLOW_COPY_AND_ASSIGN(QuitWithAppsController);
     47 };
     48 
     49 #endif  // CHROME_BROWSER_UI_COCOA_APPS_QUIT_WITH_APPS_CONTROLLER_MAC_H_
     50