Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: chrome/browser/ui/views/network_profile_bubble.cc

Issue 10388239: Make NetworkProfileBubble not use BrowserList::GetLastActive() as much. Instead pass it a profile a… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/views/network_profile_bubble.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/browser/ui/views/network_profile_bubble.h" 5 #include "chrome/browser/ui/views/network_profile_bubble.h"
6 6
7 #include <wtsapi32.h> 7 #include <wtsapi32.h>
8 // Make sure we link the wtsapi lib file in. 8 // Make sure we link the wtsapi lib file in.
9 #pragma comment(lib, "wtsapi32.lib") 9 #pragma comment(lib, "wtsapi32.lib")
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/file_path.h" 13 #include "base/file_path.h"
14 #include "base/file_util.h" 14 #include "base/file_util.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/prefs/pref_service.h" 17 #include "chrome/browser/prefs/pref_service.h"
18 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/ui/browser.h"
19 #include "chrome/browser/ui/browser_list.h" 20 #include "chrome/browser/ui/browser_list.h"
sky 2012/05/23 00:03:10 Can you remove this include now?
20 #include "chrome/browser/ui/network_profile_bubble_prefs.h" 21 #include "chrome/browser/ui/network_profile_bubble_prefs.h"
21 #include "chrome/browser/ui/views/event_utils.h" 22 #include "chrome/browser/ui/views/event_utils.h"
22 #include "chrome/browser/ui/views/frame/browser_view.h" 23 #include "chrome/browser/ui/views/frame/browser_view.h"
23 #include "chrome/browser/ui/views/toolbar_view.h" 24 #include "chrome/browser/ui/views/toolbar_view.h"
24 #include "chrome/common/chrome_switches.h" 25 #include "chrome/common/chrome_switches.h"
25 #include "chrome/common/pref_names.h" 26 #include "chrome/common/pref_names.h"
26 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
27 #include "grit/chromium_strings.h" 28 #include "grit/chromium_strings.h"
28 #include "grit/generated_resources.h" 29 #include "grit/generated_resources.h"
29 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 event, 76 event,
76 METRIC_NETWORKED_PROFILE_CHECK_SIZE); 77 METRIC_NETWORKED_PROFILE_CHECK_SIZE);
77 } 78 }
78 79
79 // Implementation of BrowserList::Observer used to wait for a browser window. 80 // Implementation of BrowserList::Observer used to wait for a browser window.
80 class BrowserListObserver : public BrowserList::Observer { 81 class BrowserListObserver : public BrowserList::Observer {
81 private: 82 private:
82 virtual ~BrowserListObserver(); 83 virtual ~BrowserListObserver();
83 84
84 // Overridden from BrowserList::Observer: 85 // Overridden from BrowserList::Observer:
85 virtual void OnBrowserAdded(const Browser* browser) OVERRIDE; 86 virtual void OnBrowserAdded(Browser* browser) OVERRIDE;
86 virtual void OnBrowserRemoved(const Browser* browser) OVERRIDE; 87 virtual void OnBrowserRemoved(Browser* browser) OVERRIDE;
87 virtual void OnBrowserSetLastActive(const Browser* browser) OVERRIDE; 88 virtual void OnBrowserSetLastActive(Browser* browser) OVERRIDE;
88 }; 89 };
89 90
90 BrowserListObserver::~BrowserListObserver() { 91 BrowserListObserver::~BrowserListObserver() {
91 } 92 }
92 93
93 void BrowserListObserver::OnBrowserAdded(const Browser* browser) { 94 void BrowserListObserver::OnBrowserAdded(Browser* browser) {
94 } 95 }
95 96
96 void BrowserListObserver::OnBrowserRemoved(const Browser* browser) { 97 void BrowserListObserver::OnBrowserRemoved(Browser* browser) {
97 } 98 }
98 99
99 void BrowserListObserver::OnBrowserSetLastActive(const Browser* browser) { 100 void BrowserListObserver::OnBrowserSetLastActive(Browser* browser) {
100 NetworkProfileBubble::ShowNotification(browser); 101 NetworkProfileBubble::ShowNotification(browser);
101 // No need to observe anymore. 102 // No need to observe anymore.
102 BrowserList::RemoveObserver(this); 103 BrowserList::RemoveObserver(this);
103 delete this; 104 delete this;
104 } 105 }
105 106
106 } // namespace 107 } // namespace
107 108
108 // static 109 // static
109 bool NetworkProfileBubble::notification_shown_ = false; 110 bool NetworkProfileBubble::notification_shown_ = false;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 base::Time::Now() - base::Time::FromTimeT(last_check); 184 base::Time::Now() - base::Time::FromTimeT(last_check);
184 if (time_since_last_check.InDays() > kSilenceDurationDays) { 185 if (time_since_last_check.InDays() > kSilenceDurationDays) {
185 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, 186 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft,
186 browser::kMaxWarnings); 187 browser::kMaxWarnings);
187 return !notification_shown_; 188 return !notification_shown_;
188 } 189 }
189 return false; 190 return false;
190 } 191 }
191 192
192 // static 193 // static
193 void NetworkProfileBubble::ShowNotification(const Browser* browser) { 194 void NetworkProfileBubble::ShowNotification(Browser* browser) {
194 views::View* anchor = NULL; 195 views::View* anchor = NULL;
195 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); 196 BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser);
196 if (browser_view && browser_view->GetToolbarView()) 197 if (browser_view && browser_view->GetToolbarView())
197 anchor = browser_view->GetToolbarView()->app_menu(); 198 anchor = browser_view->GetToolbarView()->app_menu();
198 NetworkProfileBubble* bubble = new NetworkProfileBubble(anchor); 199 NetworkProfileBubble* bubble =
200 new NetworkProfileBubble(anchor, browser, browser->profile());
199 views::BubbleDelegateView::CreateBubble(bubble); 201 views::BubbleDelegateView::CreateBubble(bubble);
200 bubble->Show(); 202 bubble->Show();
201 notification_shown_ = true; 203 notification_shown_ = true;
202 204
203 // Mark the time of the last bubble and reduce the number of warnings left 205 // Mark the time of the last bubble and reduce the number of warnings left
204 // before the next silence period starts. 206 // before the next silence period starts.
205 PrefService* prefs = browser->profile()->GetPrefs(); 207 PrefService* prefs = browser->profile()->GetPrefs();
206 prefs->SetInt64(prefs::kNetworkProfileLastWarningTime, 208 prefs->SetInt64(prefs::kNetworkProfileLastWarningTime,
207 base::Time::Now().ToTimeT()); 209 base::Time::Now().ToTimeT());
208 int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft); 210 int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft);
209 if (left_warnings > 0) 211 if (left_warnings > 0)
210 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, --left_warnings); 212 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, --left_warnings);
211 } 213 }
212 214
213 //////////////////////////////////////////////////////////////////////////////// 215 ////////////////////////////////////////////////////////////////////////////////
214 // NetworkProfileBubble, private: 216 // NetworkProfileBubble, private:
215 217
216 NetworkProfileBubble::NetworkProfileBubble(views::View* anchor) 218 NetworkProfileBubble::NetworkProfileBubble(views::View* anchor,
217 : BubbleDelegateView(anchor, views::BubbleBorder::TOP_RIGHT) { 219 content::PageNavigator* navigator,
220 Profile* profile)
221 : BubbleDelegateView(anchor, views::BubbleBorder::TOP_RIGHT),
222 navigator_(navigator),
223 profile_(profile) {
218 } 224 }
219 225
220 NetworkProfileBubble::~NetworkProfileBubble() { 226 NetworkProfileBubble::~NetworkProfileBubble() {
221 } 227 }
222 228
223 void NetworkProfileBubble::Init() { 229 void NetworkProfileBubble::Init() {
224 views::GridLayout* layout = views::GridLayout::CreatePanel(this); 230 views::GridLayout* layout = views::GridLayout::CreatePanel(this);
225 layout->SetInsets(0, kInset, kInset, kInset); 231 layout->SetInsets(0, kInset, kInset, kInset);
226 SetLayoutManager(layout); 232 SetLayoutManager(layout);
227 233
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 267
262 gfx::Rect NetworkProfileBubble::GetAnchorRect() { 268 gfx::Rect NetworkProfileBubble::GetAnchorRect() {
263 // Compensate for padding in anchor. 269 // Compensate for padding in anchor.
264 gfx::Rect rect(BubbleDelegateView::GetAnchorRect()); 270 gfx::Rect rect(BubbleDelegateView::GetAnchorRect());
265 rect.Inset(0, anchor_view() ? kAnchorVerticalInset : 0); 271 rect.Inset(0, anchor_view() ? kAnchorVerticalInset : 0);
266 return rect; 272 return rect;
267 } 273 }
268 274
269 void NetworkProfileBubble::LinkClicked(views::Link* source, int event_flags) { 275 void NetworkProfileBubble::LinkClicked(views::Link* source, int event_flags) {
270 RecordUmaEvent(METRIC_LEARN_MORE_CLICKED); 276 RecordUmaEvent(METRIC_LEARN_MORE_CLICKED);
271 Browser* browser = BrowserList::GetLastActive(); 277 WindowOpenDisposition disposition =
272 if (browser) { 278 event_utils::DispositionFromEventFlags(event_flags);
273 WindowOpenDisposition disposition = 279 content::OpenURLParams params(
274 event_utils::DispositionFromEventFlags(event_flags); 280 GURL("https://sites.google.com/a/chromium.org/dev/administrators/"
275 content::OpenURLParams params( 281 "common-problems-and-solutions#network_profile"),
276 GURL("https://sites.google.com/a/chromium.org/dev/administrators/" 282 content::Referrer(),
277 "common-problems-and-solutions#network_profile"), 283 disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition,
278 content::Referrer(), 284 content::PAGE_TRANSITION_LINK, false);
279 disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition, 285 navigator_->OpenURL(params);
280 content::PAGE_TRANSITION_LINK, false); 286
281 browser->OpenURL(params); 287 // If the user interacted with the bubble we don't reduce the number of
282 // If the user interacted with the bubble we don't reduce the number of 288 // warnings left.
283 // warnings left. 289 PrefService* prefs = profile_->GetPrefs();
284 PrefService* prefs = browser->profile()->GetPrefs(); 290 int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft);
285 int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft); 291 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, ++left_warnings);
286 prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, ++left_warnings);
287 }
288 GetWidget()->Close(); 292 GetWidget()->Close();
289 } 293 }
290 294
291 void NetworkProfileBubble::ButtonPressed(views::Button* sender, 295 void NetworkProfileBubble::ButtonPressed(views::Button* sender,
292 const views::Event& event) { 296 const views::Event& event) {
293 RecordUmaEvent(METRIC_ACKNOWLEDGED); 297 RecordUmaEvent(METRIC_ACKNOWLEDGED);
294 298
295 GetWidget()->Close(); 299 GetWidget()->Close();
296 } 300 }
297 301
298 // static 302 // static
299 void NetworkProfileBubble::NotifyNetworkProfileDetected() { 303 void NetworkProfileBubble::NotifyNetworkProfileDetected() {
300 if (BrowserList::GetLastActive() != NULL) 304 if (BrowserList::GetLastActive() != NULL)
301 ShowNotification(BrowserList::GetLastActive()); 305 ShowNotification(BrowserList::GetLastActive());
302 else 306 else
303 BrowserList::AddObserver(new BrowserListObserver()); 307 BrowserList::AddObserver(new BrowserListObserver());
304 } 308 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/network_profile_bubble.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698