network-list: New subText for carrier locked
- Changes to add new cellular sub text when SIM is carrier locked. UX - https://docs.google.com/presentation/d/1lz6MT8S6b43omOQ8WCmKPlSWXKjW-fGtKBTTKi5gMxE/edit?resourcekey=0-4nMoXfvIeEkayQqkxEbf4A#slide=id.g18deeae35d3_0_26 Bug: b:294133684 Change-Id: Ib97f8b56ad7a95e0323059a9f208ae0d2c559eea Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4785928 Commit-Queue: Ujjwal Pande <ujjwalpande@google.com> Reviewed-by: Gordon Seto <gordonseto@google.com> Cr-Commit-Position: refs/heads/main@{#1195132}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
42db24bc76
commit
7285d0c1fb
@ -2843,6 +2843,9 @@ Some features are limited to increase battery life.
|
||||
</message>
|
||||
<message name="IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CLICK_TO_UNLOCK" desc="The label used in quick settings to indicate a cellular network is locked and clicking on it will open unlock dialog in ChromeOS settings. [CHAR_LIMIT=29]">
|
||||
Click to unlock
|
||||
</message>
|
||||
<message name="IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CARRIER_LOCKED" desc="The label used in quick settings to indicate a cellular network is carrier locked. [CHAR_LIMIT=29]">
|
||||
Locked by provider
|
||||
</message>
|
||||
<message name="IDS_ASH_STATUS_TRAY_NETWORK_STATUS_SIGN_IN_TO_UNLOCK" desc="The label used in quick settings to indicate a cellular network is locked, after signing in the user can unlock the network. [CHAR_LIMIT=29]">
|
||||
Sign in to unlock
|
||||
|
@ -0,0 +1 @@
|
||||
6ae86d18b4a34f55896a20181544af8ef6e2189e
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "ash/constants/ash_features.h"
|
||||
#include "ash/public/cpp/bluetooth_config_service.h"
|
||||
#include "ash/public/cpp/system_tray_client.h"
|
||||
#include "ash/session/session_controller_impl.h"
|
||||
@ -158,6 +159,14 @@ void NetworkDetailedViewController::OnNetworkListItemSelected(
|
||||
if (!Shell::Get()->session_controller()->ShouldEnableSettings()) {
|
||||
return;
|
||||
}
|
||||
// It is not possible to unlock the carrier locked device by entering the
|
||||
// pin on UI as unlock flow is triggered by simLock server
|
||||
if (features::IsCellularCarrierLockEnabled()) {
|
||||
if (network->type_state->get_cellular()->sim_lock_type ==
|
||||
"network-pin") {
|
||||
return;
|
||||
}
|
||||
}
|
||||
RecordNetworkRowClickedAction(
|
||||
NetworkRowClickedAction::kOpenSimUnlockDialog);
|
||||
Shell::Get()->system_tray_model()->client()->ShowSettingsSimUnlock();
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "ash/constants/ash_features.h"
|
||||
#include "ash/public/cpp/test/test_system_tray_client.h"
|
||||
#include "ash/shell.h"
|
||||
#include "ash/system/network/network_utils.h"
|
||||
@ -14,6 +15,7 @@
|
||||
#include "base/strings/strcat.h"
|
||||
#include "base/test/metrics/histogram_tester.h"
|
||||
#include "base/test/metrics/user_action_tester.h"
|
||||
#include "base/test/scoped_feature_list.h"
|
||||
#include "chromeos/ash/components/network/network_connect.h"
|
||||
#include "chromeos/ash/components/network/network_handler.h"
|
||||
#include "chromeos/ash/components/network/network_state_handler.h"
|
||||
@ -382,6 +384,68 @@ TEST_F(NetworkDetailedViewControllerTest, CellularNetworkListItemSelected) {
|
||||
/*count=*/1u, /*total_count=*/2u);
|
||||
}
|
||||
|
||||
TEST_F(NetworkDetailedViewControllerTest,
|
||||
CarrierLockedNetworkListItemSelected) {
|
||||
base::UserActionTester user_action_tester;
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitAndEnableFeature(features::kCellularCarrierLock);
|
||||
|
||||
EXPECT_EQ(0, user_action_tester.GetActionCount(kNetworkConnectionDetails));
|
||||
EXPECT_EQ(0, user_action_tester.GetActionCount(kNetworkConnectConfigured));
|
||||
EXPECT_EQ(0, GetSystemTrayClient()->show_network_settings_count());
|
||||
EXPECT_EQ(0, GetSystemTrayClient()->show_sim_unlock_settings_count());
|
||||
|
||||
CheckRowClickedActionHistogramBuckets(
|
||||
NetworkRowClickedAction::kOpenNetworkSettingsPage,
|
||||
/*count=*/0u, /*total_count=*/0u);
|
||||
CheckRowClickedActionHistogramBuckets(
|
||||
NetworkRowClickedAction::kOpenSimUnlockDialog,
|
||||
/*count=*/0u, /*total_count=*/0u);
|
||||
|
||||
NetworkStatePropertiesPtr cellular_network =
|
||||
CreateStandaloneNetworkProperties(kCellular, NetworkType::kCellular,
|
||||
ConnectionStateType::kConnected);
|
||||
|
||||
// When cellular network is carrier locked, verify that SIM unlock
|
||||
// settings page is NOT displayed. Device will be unlocked only through
|
||||
// carrier lock manager.
|
||||
cellular_network->type_state->get_cellular()->sim_locked = true;
|
||||
cellular_network->type_state->get_cellular()->sim_lock_type = "network-pin";
|
||||
SelectNetworkListItem(cellular_network);
|
||||
EXPECT_EQ(0, GetSystemTrayClient()->show_sim_unlock_settings_count());
|
||||
}
|
||||
|
||||
TEST_F(NetworkDetailedViewControllerTest,
|
||||
CarrierLockedNetworkListItemSelectedFeatureDisabled) {
|
||||
base::UserActionTester user_action_tester;
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitAndDisableFeature(features::kCellularCarrierLock);
|
||||
|
||||
EXPECT_EQ(0, user_action_tester.GetActionCount(kNetworkConnectionDetails));
|
||||
EXPECT_EQ(0, user_action_tester.GetActionCount(kNetworkConnectConfigured));
|
||||
EXPECT_EQ(0, GetSystemTrayClient()->show_network_settings_count());
|
||||
EXPECT_EQ(0, GetSystemTrayClient()->show_sim_unlock_settings_count());
|
||||
|
||||
CheckRowClickedActionHistogramBuckets(
|
||||
NetworkRowClickedAction::kOpenNetworkSettingsPage,
|
||||
/*count=*/0u, /*total_count=*/0u);
|
||||
CheckRowClickedActionHistogramBuckets(
|
||||
NetworkRowClickedAction::kOpenSimUnlockDialog,
|
||||
/*count=*/0u, /*total_count=*/0u);
|
||||
|
||||
NetworkStatePropertiesPtr cellular_network =
|
||||
CreateStandaloneNetworkProperties(kCellular, NetworkType::kCellular,
|
||||
ConnectionStateType::kConnected);
|
||||
|
||||
// With feature flag disabled verify that When cellular
|
||||
// network is carrier locked SIM unlock
|
||||
// settings page is displayed.
|
||||
cellular_network->type_state->get_cellular()->sim_locked = true;
|
||||
cellular_network->type_state->get_cellular()->sim_lock_type = "network-pin";
|
||||
SelectNetworkListItem(cellular_network);
|
||||
EXPECT_EQ(1, GetSystemTrayClient()->show_sim_unlock_settings_count());
|
||||
}
|
||||
|
||||
TEST_F(NetworkDetailedViewControllerTest, WifiNetworkListItemSelected) {
|
||||
base::UserActionTester user_action_tester;
|
||||
|
||||
|
@ -100,6 +100,16 @@ bool IsCellularNetworkSimLocked(
|
||||
return network_properties->type_state->get_cellular()->sim_locked;
|
||||
}
|
||||
|
||||
bool IsCellularNetworkCarrierLocked(
|
||||
const NetworkStatePropertiesPtr& network_properties) {
|
||||
CHECK(features::IsCellularCarrierLockEnabled());
|
||||
CHECK(
|
||||
NetworkTypeMatchesType(network_properties->type, NetworkType::kCellular));
|
||||
return network_properties->type_state->get_cellular()->sim_locked &&
|
||||
network_properties->type_state->get_cellular()->sim_lock_type ==
|
||||
"network-pin";
|
||||
}
|
||||
|
||||
bool IsNetworkConnectable(const NetworkStatePropertiesPtr& network_properties) {
|
||||
// The network must not already be connected to be able to be connected to.
|
||||
if (network_properties->connection_state !=
|
||||
@ -219,6 +229,12 @@ gfx::ImageSkia GetNetworkImageForNetwork(
|
||||
|
||||
int GetCellularNetworkSubText(
|
||||
const NetworkStatePropertiesPtr& network_properties) {
|
||||
if (features::IsCellularCarrierLockEnabled()) {
|
||||
if (IsCellularNetworkCarrierLocked(network_properties)) {
|
||||
return IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CARRIER_LOCKED;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsCellularNetworkUnActivated(network_properties)) {
|
||||
if (Shell::Get()->session_controller()->login_status() ==
|
||||
LoginStatus::NOT_LOGGED_IN) {
|
||||
@ -539,6 +555,12 @@ std::u16string
|
||||
NetworkListNetworkItemView::GenerateAccessibilityDescriptionForCellular(
|
||||
const std::u16string& connection_status,
|
||||
int signal_strength) {
|
||||
if (features::IsCellularCarrierLockEnabled()) {
|
||||
if (IsCellularNetworkCarrierLocked(network_properties())) {
|
||||
return l10n_util::GetStringUTF16(
|
||||
IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CARRIER_LOCKED);
|
||||
}
|
||||
}
|
||||
if (IsCellularNetworkUnActivated(network_properties())) {
|
||||
if (Shell::Get()->session_controller()->login_status() ==
|
||||
LoginStatus::NOT_LOGGED_IN) {
|
||||
|
@ -306,6 +306,39 @@ TEST_P(NetworkListNetworkItemViewTest, HasCorrectCellularSublabel) {
|
||||
network_list_network_item_view()->sub_text_label()->GetText());
|
||||
}
|
||||
|
||||
TEST_P(NetworkListNetworkItemViewTest, HasCorrectCarrierLockSublabel) {
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitAndEnableFeature(features::kCellularCarrierLock);
|
||||
EXPECT_FALSE(network_list_network_item_view()->sub_text_label());
|
||||
NetworkStatePropertiesPtr cellular_network =
|
||||
CreateStandaloneNetworkProperties(kCellularName, NetworkType::kCellular,
|
||||
ConnectionStateType::kConnected);
|
||||
// Label for carrier locked cellular network.
|
||||
cellular_network->type_state->get_cellular()->sim_locked = true;
|
||||
cellular_network->type_state->get_cellular()->sim_lock_type = "network-pin";
|
||||
UpdateViewForNetwork(cellular_network);
|
||||
EXPECT_EQ(l10n_util::GetStringUTF16(
|
||||
IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CARRIER_LOCKED),
|
||||
network_list_network_item_view()->sub_text_label()->GetText());
|
||||
}
|
||||
|
||||
TEST_P(NetworkListNetworkItemViewTest,
|
||||
HasCorrectCarrierLockSublabelFeatureDisable) {
|
||||
base::test::ScopedFeatureList scoped_feature_list;
|
||||
scoped_feature_list.InitAndDisableFeature(features::kCellularCarrierLock);
|
||||
EXPECT_FALSE(network_list_network_item_view()->sub_text_label());
|
||||
NetworkStatePropertiesPtr cellular_network =
|
||||
CreateStandaloneNetworkProperties(kCellularName, NetworkType::kCellular,
|
||||
ConnectionStateType::kConnected);
|
||||
// When feature is disabled, existing string should be displayed
|
||||
cellular_network->type_state->get_cellular()->sim_locked = true;
|
||||
cellular_network->type_state->get_cellular()->sim_lock_type = "network-pin";
|
||||
UpdateViewForNetwork(cellular_network);
|
||||
EXPECT_EQ(l10n_util::GetStringUTF16(
|
||||
IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CLICK_TO_UNLOCK),
|
||||
network_list_network_item_view()->sub_text_label()->GetText());
|
||||
}
|
||||
|
||||
TEST_P(NetworkListNetworkItemViewTest, HasCorrectPortalSublabel) {
|
||||
EXPECT_FALSE(network_list_network_item_view()->sub_text_label());
|
||||
|
||||
|
Reference in New Issue
Block a user