Index: chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc |
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc |
index b34cf1ee7c1170726bd7f79d5a03c90d46c75115..6c16f1c849fc78f2dd70340994e6e45f407b2870 100644 |
--- a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc |
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc |
@@ -5,12 +5,16 @@ |
#include "base/compiler_specific.h" |
#include "base/macros.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/prefs/pref_service.h" |
#include "base/run_loop.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/login/login_manager_test.h" |
#include "chrome/browser/chromeos/login/startup_utils.h" |
+#include "chrome/browser/chromeos/net/captive_portal_ignore_proxy_policy_values.h" |
#include "chrome/browser/chromeos/net/network_portal_detector_impl.h" |
#include "chrome/browser/chromeos/net/network_portal_detector_test_utils.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/common/pref_names.h" |
#include "chromeos/chromeos_switches.h" |
#include "chromeos/dbus/dbus_thread_manager.h" |
#include "chromeos/dbus/shill_service_client.h" |
@@ -141,6 +145,16 @@ class NetworkPortalDetectorImplBrowserTest |
MessageCenter* message_center() { return MessageCenter::Get(); } |
+ void SetIgnoreNoNetworkForTesting() { |
+ network_portal_detector_->notification_controller_ |
+ .SetIgnoreNoNetworkForTesting(); |
+ } |
+ |
+ const NetworkPortalWebDialog* GetDialog() const { |
+ return network_portal_detector_->notification_controller_ |
+ .GetDialogForTesting(); |
+ } |
+ |
private: |
NetworkPortalDetectorImpl* network_portal_detector_; |
@@ -203,4 +217,122 @@ IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest, |
action_checker.Expect(Controller::USER_ACTION_METRIC_CLOSED, 1)->Check()); |
} |
+IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest, |
+ PRE_CaptivePortalAuthenticationIgnoresProxyTrue) { |
+ RegisterUser(kTestUser); |
+ StartupUtils::MarkOobeCompleted(); |
+ ASSERT_EQ(PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN, strategy()->Id()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest, |
+ CaptivePortalAuthenticationIgnoresProxyTrue) { |
+ typedef NetworkPortalNotificationController Controller; |
+ |
+ TestObserver observer; |
+ |
+ EnumHistogramChecker ui_checker(kNotificationMetric, |
+ Controller::NOTIFICATION_METRIC_COUNT, NULL); |
ygorshenin1
2014/12/25 18:07:15
nit: you can use nullptr instead of NULL.
Alexander Alekseev
2015/01/05 20:53:02
Done.
|
+ EnumHistogramChecker action_checker( |
+ kUserActionMetric, Controller::USER_ACTION_METRIC_COUNT, NULL); |
+ |
+ LoginUser(kTestUser); |
+ content::RunAllPendingInMessageLoop(); |
+ |
+ SetIgnoreNoNetworkForTesting(); |
+ |
+ ProfileManager::GetActiveUserProfile()->GetPrefs()->SetInteger( |
+ prefs::kCaptivePortalAuthenticationIgnoresProxy, |
+ CAPTIVE_PORTAL_AUTH_IGNORE_PROXY_TRUE); |
+ |
+ // User connects to wifi. |
+ SetConnected(kWifiServicePath); |
+ |
+ ASSERT_EQ(PortalDetectorStrategy::STRATEGY_ID_SESSION, strategy()->Id()); |
+ |
+ // No notification until portal detection is completed. |
+ ASSERT_FALSE(message_center()->FindVisibleNotificationById(kNotificationId)); |
+ RestartDetection(); |
+ CompleteURLFetch(net::OK, 200, NULL); |
+ |
+ // Check that wifi is marked as behind the portal and that notification |
+ // is displayed. |
+ ASSERT_TRUE(message_center()->FindVisibleNotificationById(kNotificationId)); |
+ ASSERT_EQ( |
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL, |
+ NetworkPortalDetector::Get()->GetCaptivePortalState(kWifiGuid).status); |
+ |
+ // Wait until notification is displayed. |
+ observer.WaitAndReset(); |
+ |
+ ASSERT_TRUE( |
+ ui_checker.Expect(Controller::NOTIFICATION_METRIC_DISPLAYED, 1)->Check()); |
+ ASSERT_TRUE(action_checker.Check()); |
+ |
+ message_center()->ClickOnNotification(kNotificationId); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ // Check that dialog is displayed. |
+ ASSERT_TRUE(GetDialog()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest, |
+ PRE_CaptivePortalAuthenticationIgnoresProxyFalse) { |
+ RegisterUser(kTestUser); |
+ StartupUtils::MarkOobeCompleted(); |
+ ASSERT_EQ(PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN, strategy()->Id()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest, |
+ CaptivePortalAuthenticationIgnoresProxyFalse) { |
ygorshenin1
2014/12/25 18:07:15
Both CaptivePortalAuthenticationIgnoresProxy{False
Alexander Alekseev
2015/01/05 20:53:02
Done.
|
+ typedef NetworkPortalNotificationController Controller; |
+ |
+ TestObserver observer; |
+ |
+ EnumHistogramChecker ui_checker(kNotificationMetric, |
+ Controller::NOTIFICATION_METRIC_COUNT, NULL); |
+ EnumHistogramChecker action_checker( |
+ kUserActionMetric, Controller::USER_ACTION_METRIC_COUNT, NULL); |
+ |
+ LoginUser(kTestUser); |
+ content::RunAllPendingInMessageLoop(); |
+ |
+ SetIgnoreNoNetworkForTesting(); |
+ |
+ ProfileManager::GetActiveUserProfile()->GetPrefs()->SetInteger( |
+ prefs::kCaptivePortalAuthenticationIgnoresProxy, |
+ CAPTIVE_PORTAL_AUTH_IGNORE_PROXY_FALSE); |
+ |
+ // User connects to wifi. |
+ SetConnected(kWifiServicePath); |
+ |
+ ASSERT_EQ(PortalDetectorStrategy::STRATEGY_ID_SESSION, strategy()->Id()); |
+ |
+ // No notification until portal detection is completed. |
+ ASSERT_FALSE(message_center()->FindVisibleNotificationById(kNotificationId)); |
+ RestartDetection(); |
+ CompleteURLFetch(net::OK, 200, NULL); |
+ |
+ // Check that wifi is marked as behind the portal and that notification |
+ // is displayed. |
+ ASSERT_TRUE(message_center()->FindVisibleNotificationById(kNotificationId)); |
+ ASSERT_EQ( |
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL, |
+ NetworkPortalDetector::Get()->GetCaptivePortalState(kWifiGuid).status); |
+ |
+ // Wait until notification is displayed. |
+ observer.WaitAndReset(); |
+ |
+ ASSERT_TRUE( |
+ ui_checker.Expect(Controller::NOTIFICATION_METRIC_DISPLAYED, 1)->Check()); |
+ ASSERT_TRUE(action_checker.Check()); |
+ |
+ message_center()->ClickOnNotification(kNotificationId); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ // Check that dialog is not displayed. |
+ ASSERT_FALSE(GetDialog()); |
+} |
+ |
} // namespace chromeos |