Cast: Stop logging kVideoFrameSentToEncoder and rename a couple events.
[chromium-blink-merge.git] / chrome / browser / chromeos / ui / idle_logout_dialog_view.h
blobda6f4d92d817b97c365d8c729c5e1739118335f7
1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_CHROMEOS_UI_IDLE_LOGOUT_DIALOG_VIEW_H_
6 #define CHROME_BROWSER_CHROMEOS_UI_IDLE_LOGOUT_DIALOG_VIEW_H_
8 #include "base/gtest_prod_util.h"
9 #include "base/memory/weak_ptr.h"
10 #include "base/timer/timer.h"
11 #include "ui/views/window/dialog_delegate.h"
13 namespace base {
14 class TimeDelta;
16 namespace views {
17 class Label;
20 namespace chromeos {
22 class IdleLogoutDialogView;
23 class KioskModeSettings;
25 // A class that holds the settings for IdleLogoutDialogView; this class
26 // can be overridden with a mock for testing.
27 class IdleLogoutSettingsProvider {
28 public:
29 IdleLogoutSettingsProvider();
30 virtual ~IdleLogoutSettingsProvider();
32 virtual base::TimeDelta GetCountdownUpdateInterval();
33 virtual KioskModeSettings* GetKioskModeSettings();
34 virtual void LogoutCurrentUser(IdleLogoutDialogView* dialog);
36 private:
37 DISALLOW_COPY_AND_ASSIGN(IdleLogoutSettingsProvider);
40 // A class to show the logout on idle dialog if the machine is in retail mode.
41 class IdleLogoutDialogView : public views::DialogDelegateView {
42 public:
43 static void ShowDialog();
44 static void CloseDialog();
46 // views::DialogDelegateView:
47 virtual int GetDialogButtons() const OVERRIDE;
48 virtual ui::ModalType GetModalType() const OVERRIDE;
49 virtual base::string16 GetWindowTitle() const OVERRIDE;
50 virtual bool Close() OVERRIDE;
52 private:
53 friend class MockIdleLogoutSettingsProvider;
54 friend class IdleLogoutDialogViewTest;
55 FRIEND_TEST_ALL_PREFIXES(IdleLogoutDialogViewTest, ShowDialogAndCloseView);
56 FRIEND_TEST_ALL_PREFIXES(IdleLogoutDialogViewTest,
57 ShowDialogAndCloseViewClose);
59 IdleLogoutDialogView();
60 virtual ~IdleLogoutDialogView();
62 // Adds the labels and adds them to the layout.
63 void InitAndShow();
65 void Show();
67 void UpdateCountdown();
69 // For testing.
70 static IdleLogoutDialogView* current_instance();
71 static void set_settings_provider(IdleLogoutSettingsProvider* provider);
73 views::Label* restart_label_;
75 // Time at which the countdown is over and we should close the dialog.
76 base::Time countdown_end_time_;
78 base::RepeatingTimer<IdleLogoutDialogView> timer_;
80 base::WeakPtrFactory<IdleLogoutDialogView> weak_ptr_factory_;
82 static IdleLogoutSettingsProvider* provider_;
84 DISALLOW_COPY_AND_ASSIGN(IdleLogoutDialogView);
87 } // namespace chromeos
89 #endif // CHROME_BROWSER_CHROMEOS_UI_IDLE_LOGOUT_DIALOG_VIEW_H_