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

Unified Diff: chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc

Issue 818433003: ChromeOS: Implement CaptivePortalAuthenticationIgnoresProxy policy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tests fixed. Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
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 a33dd8888e08b834e45129d76614ad42d16860f7..7d064a24f347e1f8b8bb5ffb4ead6e7637438f9c 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
@@ -2,15 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/command_line.h"
#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/network_portal_detector_impl.h"
#include "chrome/browser/chromeos/net/network_portal_detector_test_utils.h"
+#include "chrome/browser/chromeos/net/network_portal_notification_controller.h"
+#include "chrome/browser/prefs/pref_service_syncable.h"
+#include "chrome/browser/profiles/profile.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"
@@ -20,6 +27,7 @@
#include "content/public/test/test_utils.h"
#include "dbus/object_path.h"
#include "net/base/net_errors.h"
+#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/message_center_observer.h"
@@ -30,6 +38,8 @@ using message_center::MessageCenterObserver;
namespace chromeos {
+class NetworkPortalWebDialog;
+
namespace {
const char* const kNotificationId =
@@ -139,6 +149,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_;
@@ -201,4 +221,90 @@ IN_PROC_BROWSER_TEST_F(NetworkPortalDetectorImplBrowserTest,
action_checker.Expect(Controller::USER_ACTION_METRIC_CLOSED, 1)->Check());
}
+class NetworkPortalDetectorImplBrowserTestIgnoreProxy
+ : public NetworkPortalDetectorImplBrowserTest,
+ public testing::WithParamInterface<bool> {
+ public:
+ NetworkPortalDetectorImplBrowserTestIgnoreProxy()
+ : NetworkPortalDetectorImplBrowserTest() {}
+
+ void SetUpCommandLine(base::CommandLine* command_line) override {
+ NetworkPortalDetectorImplBrowserTest::SetUpCommandLine(command_line);
+
+ command_line->AppendSwitch(
+ chromeos::switches::kEnableCaptivePortalBypassProxyOption);
+ }
+
+ protected:
+ void TestImpl(const bool preference_value);
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorImplBrowserTestIgnoreProxy);
+};
+
+void NetworkPortalDetectorImplBrowserTestIgnoreProxy::TestImpl(
+ const bool preference_value) {
+ using Controller = NetworkPortalNotificationController;
+
+ TestObserver observer;
+
+ EnumHistogramChecker ui_checker(
+ kNotificationMetric, Controller::NOTIFICATION_METRIC_COUNT, nullptr);
+ EnumHistogramChecker action_checker(
+ kUserActionMetric, Controller::USER_ACTION_METRIC_COUNT, nullptr);
+
+ LoginUser(kTestUser);
+ content::RunAllPendingInMessageLoop();
+
+ SetIgnoreNoNetworkForTesting();
+
+ ProfileManager::GetActiveUserProfile()->GetPrefs()->SetBoolean(
+ prefs::kCaptivePortalAuthenticationIgnoresProxy, preference_value);
+
+ // User connects to wifi.
+ SetConnected(kWifiServicePath);
+
+ EXPECT_EQ(PortalDetectorStrategy::STRATEGY_ID_SESSION, strategy()->Id());
+
+ // No notification until portal detection is completed.
+ EXPECT_FALSE(message_center()->FindVisibleNotificationById(kNotificationId));
+ RestartDetection();
+ CompleteURLFetch(net::OK, 200, nullptr);
+
+ // Check that WiFi is marked as behind a portal and that a notification
+ // is displayed.
+ EXPECT_TRUE(message_center()->FindVisibleNotificationById(kNotificationId));
+ EXPECT_EQ(
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL,
+ NetworkPortalDetector::Get()->GetCaptivePortalState(kWifiGuid).status);
+
+ // Wait until notification is displayed.
+ observer.WaitAndReset();
+
+ EXPECT_TRUE(
+ ui_checker.Expect(Controller::NOTIFICATION_METRIC_DISPLAYED, 1)->Check());
+ EXPECT_TRUE(action_checker.Check());
+
+ message_center()->ClickOnNotification(kNotificationId);
+
+ content::RunAllPendingInMessageLoop();
+
+ EXPECT_EQ(preference_value, static_cast<bool>(GetDialog()));
+}
+
+IN_PROC_BROWSER_TEST_P(NetworkPortalDetectorImplBrowserTestIgnoreProxy,
+ PRE_TestWithPreference) {
+ RegisterUser(kTestUser);
+ StartupUtils::MarkOobeCompleted();
+ EXPECT_EQ(PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN, strategy()->Id());
+}
+
+IN_PROC_BROWSER_TEST_P(NetworkPortalDetectorImplBrowserTestIgnoreProxy,
+ TestWithPreference) {
+ TestImpl(GetParam());
+}
+
+INSTANTIATE_TEST_CASE_P(CaptivePortalAuthenticationIgnoresProxy,
+ NetworkPortalDetectorImplBrowserTestIgnoreProxy,
+ testing::Bool());
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698