| Index: ash/system/network/tray_network_unittest.cc
|
| diff --git a/ash/system/network/tray_network_unittest.cc b/ash/system/network/tray_network_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a1dd9973026cd903b42b9157675523a10bcf03d9
|
| --- /dev/null
|
| +++ b/ash/system/network/tray_network_unittest.cc
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "ash/system/network/tray_network.h"
|
| +
|
| +#include "ash/login_status.h"
|
| +#include "ash/system/network/network_state_list_detailed_view.h"
|
| +#include "ash/system/tray/system_tray.h"
|
| +#include "ash/test/ash_test_base.h"
|
| +#include "base/macros.h"
|
| +#include "chromeos/dbus/dbus_thread_manager.h"
|
| +#include "chromeos/network/network_handler.h"
|
| +#include "components/prefs/testing_pref_service.h"
|
| +#include "ui/message_center/message_center.h"
|
| +
|
| +using message_center::MessageCenter;
|
| +
|
| +namespace ash {
|
| +namespace {
|
| +
|
| +class TrayNetworkTest : public test::AshTestBase {
|
| + public:
|
| + TrayNetworkTest() = default;
|
| + ~TrayNetworkTest() override = default;
|
| +
|
| + // testing::Test:
|
| + void SetUp() override {
|
| + chromeos::DBusThreadManager::Initialize();
|
| + // Initializing NetworkHandler before ash is more like production.
|
| + chromeos::NetworkHandler::Initialize();
|
| + test::AshTestBase::SetUp();
|
| + chromeos::NetworkHandler::Get()->InitializePrefServices(&profile_prefs_,
|
| + &local_state_);
|
| + // Networking stubs may have asynchronous initialization.
|
| + RunAllPendingInMessageLoop();
|
| + }
|
| +
|
| + void TearDown() override {
|
| + // This roughly matches production shutdown order.
|
| + chromeos::NetworkHandler::Get()->ShutdownPrefServices();
|
| + test::AshTestBase::TearDown();
|
| + chromeos::NetworkHandler::Shutdown();
|
| + chromeos::DBusThreadManager::Shutdown();
|
| + }
|
| +
|
| + private:
|
| + TestingPrefServiceSimple profile_prefs_;
|
| + TestingPrefServiceSimple local_state_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TrayNetworkTest);
|
| +};
|
| +
|
| +// Verifies that the network views can be created.
|
| +TEST_F(TrayNetworkTest, Basics) {
|
| + // Open the system tray menu.
|
| + SystemTray* system_tray = GetPrimarySystemTray();
|
| + system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
|
| + RunAllPendingInMessageLoop();
|
| +
|
| + // Show network details.
|
| + TrayNetwork* tray_network = system_tray->GetTrayNetworkForTesting();
|
| + const int close_delay_in_seconds = 0;
|
| + bool activate = true;
|
| + system_tray->ShowDetailedView(tray_network, close_delay_in_seconds, activate,
|
| + BUBBLE_USE_EXISTING);
|
| + RunAllPendingInMessageLoop();
|
| +
|
| + // Network details view was created.
|
| + ASSERT_TRUE(tray_network->detailed());
|
| + EXPECT_TRUE(tray_network->detailed()->visible());
|
| +}
|
| +
|
| +// Verifies that toggling Wi-Fi (usually via keyboard) shows a notification.
|
| +TEST_F(TrayNetworkTest, ToggleWifi) {
|
| + TrayNetwork* tray_network =
|
| + GetPrimarySystemTray()->GetTrayNetworkForTesting();
|
| +
|
| + // No notifications at startup.
|
| + ASSERT_EQ(0u, MessageCenter::Get()->NotificationCount());
|
| +
|
| + // Simulate a user action to toggle Wi-Fi.
|
| + tray_network->RequestToggleWifi();
|
| +
|
| + // Notification was shown.
|
| + EXPECT_EQ(1u, MessageCenter::Get()->NotificationCount());
|
| + EXPECT_TRUE(MessageCenter::Get()->HasPopupNotifications());
|
| + EXPECT_TRUE(MessageCenter::Get()->FindVisibleNotificationById("wifi-toggle"));
|
| +}
|
| +
|
| +} // namespace
|
| +} // namespace ash
|
|
|