OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ | 5 #ifndef CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ |
6 #define CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ | 6 #define CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
11 #include "ui/views/bubble/bubble_delegate.h" | 11 #include "ui/views/bubble/bubble_delegate.h" |
12 #include "ui/views/controls/button/button.h" | 12 #include "ui/views/controls/button/button.h" |
13 #include "ui/views/controls/link_listener.h" | 13 #include "ui/views/controls/link_listener.h" |
14 | 14 |
15 class Browser; | 15 class Browser; |
16 class FilePath; | 16 class FilePath; |
17 class PrefService; | 17 class PrefService; |
| 18 class Profile; |
| 19 |
| 20 namespace content { |
| 21 class PageNavigator; |
| 22 } |
18 | 23 |
19 // This class will try to detect if the profile is on a network share and if | 24 // This class will try to detect if the profile is on a network share and if |
20 // this is the case notify the user with an info bubble. | 25 // this is the case notify the user with an info bubble. |
21 class NetworkProfileBubble : public views::BubbleDelegateView, | 26 class NetworkProfileBubble : public views::BubbleDelegateView, |
22 public views::ButtonListener, | 27 public views::ButtonListener, |
23 public views::LinkListener { | 28 public views::LinkListener { |
24 public: | 29 public: |
25 // Verifies that the profile folder is not located on a network share, and if | 30 // Verifies that the profile folder is not located on a network share, and if |
26 // it is shows the warning bubble to the user. | 31 // it is shows the warning bubble to the user. |
27 static void CheckNetworkProfile(const FilePath& profile_path); | 32 static void CheckNetworkProfile(const FilePath& profile_path); |
28 | 33 |
29 // Returns true if the check for network located profile should be done. This | 34 // Returns true if the check for network located profile should be done. This |
30 // test is only performed up to |kMaxWarnings| times in a row and then | 35 // test is only performed up to |kMaxWarnings| times in a row and then |
31 // repeated after a period of silence that lasts |kSilenceDurationDays| days. | 36 // repeated after a period of silence that lasts |kSilenceDurationDays| days. |
32 static bool ShouldCheckNetworkProfile(PrefService* prefs); | 37 static bool ShouldCheckNetworkProfile(PrefService* prefs); |
33 | 38 |
34 // Shows the notification bubble using the provided |browser|. | 39 // Shows the notification bubble using the provided |browser|. |
35 static void ShowNotification(const Browser* browser); | 40 static void ShowNotification(Browser* browser); |
36 | 41 |
37 private: | 42 private: |
38 explicit NetworkProfileBubble(views::View* anchor); | 43 NetworkProfileBubble(views::View* anchor, |
| 44 content::PageNavigator* navigator, |
| 45 Profile* profile); |
39 virtual ~NetworkProfileBubble(); | 46 virtual ~NetworkProfileBubble(); |
40 | 47 |
41 // views::BubbleDelegateView overrides: | 48 // views::BubbleDelegateView overrides: |
42 virtual void Init() OVERRIDE; | 49 virtual void Init() OVERRIDE; |
43 virtual gfx::Rect GetAnchorRect() OVERRIDE; | 50 virtual gfx::Rect GetAnchorRect() OVERRIDE; |
44 | 51 |
45 // views::ButtonListener overrides: | 52 // views::ButtonListener overrides: |
46 virtual void ButtonPressed(views::Button* sender, | 53 virtual void ButtonPressed(views::Button* sender, |
47 const views::Event& event) OVERRIDE; | 54 const views::Event& event) OVERRIDE; |
48 | 55 |
49 // views::LinkListener overrides: | 56 // views::LinkListener overrides: |
50 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; | 57 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; |
51 | 58 |
52 // This function creates the notification bubble, attaches it to the | 59 // This function creates the notification bubble, attaches it to the |
53 // |anchor| View and then shows it to the user. | 60 // |anchor| View and then shows it to the user. |
54 static void NotifyNetworkProfileDetected(); | 61 static void NotifyNetworkProfileDetected(); |
55 | 62 |
56 // Set to true once the notification check has been performed to avoid showing | 63 // Set to true once the notification check has been performed to avoid showing |
57 // the notification more than once per browser run. | 64 // the notification more than once per browser run. |
58 // This flag is not thread-safe and should only be accessed on the UI thread! | 65 // This flag is not thread-safe and should only be accessed on the UI thread! |
59 static bool notification_shown_; | 66 static bool notification_shown_; |
60 | 67 |
| 68 // Used for loading pages. |
| 69 content::PageNavigator* navigator_; |
| 70 Profile* profile_; |
| 71 |
61 DISALLOW_COPY_AND_ASSIGN(NetworkProfileBubble); | 72 DISALLOW_COPY_AND_ASSIGN(NetworkProfileBubble); |
62 }; | 73 }; |
63 | 74 |
64 #endif // CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ | 75 #endif // CHROME_BROWSER_UI_VIEWS_NETWORK_PROFILE_BUBBLE_H_ |
OLD | NEW |