Index: chrome/browser/ui/views/network_profile_bubble.cc |
=================================================================== |
--- chrome/browser/ui/views/network_profile_bubble.cc (revision 138102) |
+++ chrome/browser/ui/views/network_profile_bubble.cc (working copy) |
@@ -16,6 +16,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_list.h" |
sky
2012/05/23 00:03:10
Can you remove this include now?
|
#include "chrome/browser/ui/network_profile_bubble_prefs.h" |
#include "chrome/browser/ui/views/event_utils.h" |
@@ -82,21 +83,21 @@ |
virtual ~BrowserListObserver(); |
// Overridden from BrowserList::Observer: |
- virtual void OnBrowserAdded(const Browser* browser) OVERRIDE; |
- virtual void OnBrowserRemoved(const Browser* browser) OVERRIDE; |
- virtual void OnBrowserSetLastActive(const Browser* browser) OVERRIDE; |
+ virtual void OnBrowserAdded(Browser* browser) OVERRIDE; |
+ virtual void OnBrowserRemoved(Browser* browser) OVERRIDE; |
+ virtual void OnBrowserSetLastActive(Browser* browser) OVERRIDE; |
}; |
BrowserListObserver::~BrowserListObserver() { |
} |
-void BrowserListObserver::OnBrowserAdded(const Browser* browser) { |
+void BrowserListObserver::OnBrowserAdded(Browser* browser) { |
} |
-void BrowserListObserver::OnBrowserRemoved(const Browser* browser) { |
+void BrowserListObserver::OnBrowserRemoved(Browser* browser) { |
} |
-void BrowserListObserver::OnBrowserSetLastActive(const Browser* browser) { |
+void BrowserListObserver::OnBrowserSetLastActive(Browser* browser) { |
NetworkProfileBubble::ShowNotification(browser); |
// No need to observe anymore. |
BrowserList::RemoveObserver(this); |
@@ -190,12 +191,13 @@ |
} |
// static |
-void NetworkProfileBubble::ShowNotification(const Browser* browser) { |
+void NetworkProfileBubble::ShowNotification(Browser* browser) { |
views::View* anchor = NULL; |
BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser); |
if (browser_view && browser_view->GetToolbarView()) |
anchor = browser_view->GetToolbarView()->app_menu(); |
- NetworkProfileBubble* bubble = new NetworkProfileBubble(anchor); |
+ NetworkProfileBubble* bubble = |
+ new NetworkProfileBubble(anchor, browser, browser->profile()); |
views::BubbleDelegateView::CreateBubble(bubble); |
bubble->Show(); |
notification_shown_ = true; |
@@ -213,8 +215,12 @@ |
//////////////////////////////////////////////////////////////////////////////// |
// NetworkProfileBubble, private: |
-NetworkProfileBubble::NetworkProfileBubble(views::View* anchor) |
- : BubbleDelegateView(anchor, views::BubbleBorder::TOP_RIGHT) { |
+NetworkProfileBubble::NetworkProfileBubble(views::View* anchor, |
+ content::PageNavigator* navigator, |
+ Profile* profile) |
+ : BubbleDelegateView(anchor, views::BubbleBorder::TOP_RIGHT), |
+ navigator_(navigator), |
+ profile_(profile) { |
} |
NetworkProfileBubble::~NetworkProfileBubble() { |
@@ -268,23 +274,21 @@ |
void NetworkProfileBubble::LinkClicked(views::Link* source, int event_flags) { |
RecordUmaEvent(METRIC_LEARN_MORE_CLICKED); |
- Browser* browser = BrowserList::GetLastActive(); |
- if (browser) { |
- WindowOpenDisposition disposition = |
- event_utils::DispositionFromEventFlags(event_flags); |
- content::OpenURLParams params( |
- GURL("https://sites.google.com/a/chromium.org/dev/administrators/" |
- "common-problems-and-solutions#network_profile"), |
- content::Referrer(), |
- disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition, |
- content::PAGE_TRANSITION_LINK, false); |
- browser->OpenURL(params); |
- // If the user interacted with the bubble we don't reduce the number of |
- // warnings left. |
- PrefService* prefs = browser->profile()->GetPrefs(); |
- int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft); |
- prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, ++left_warnings); |
- } |
+ WindowOpenDisposition disposition = |
+ event_utils::DispositionFromEventFlags(event_flags); |
+ content::OpenURLParams params( |
+ GURL("https://sites.google.com/a/chromium.org/dev/administrators/" |
+ "common-problems-and-solutions#network_profile"), |
+ content::Referrer(), |
+ disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition, |
+ content::PAGE_TRANSITION_LINK, false); |
+ navigator_->OpenURL(params); |
+ |
+ // If the user interacted with the bubble we don't reduce the number of |
+ // warnings left. |
+ PrefService* prefs = profile_->GetPrefs(); |
+ int left_warnings = prefs->GetInteger(prefs::kNetworkProfileWarningsLeft); |
+ prefs->SetInteger(prefs::kNetworkProfileWarningsLeft, ++left_warnings); |
GetWidget()->Close(); |
} |