0

[Instant Hotspot] Rename Network to Internet in Quick Settings

Renames Quick Settings 'Network' page to 'Internet' if feature flag is
enabled. UI translation screenshot also added.

Tested: verified that QS string is changed on DUT when FF is enabled.

Bug: b/290080202
Change-Id: I031f5597ff706f5d8511317a37620a84600fb0d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4742004
Commit-Queue: Rudransh Dikshit <rudranshd@google.com>
Reviewed-by: Gordon Seto <gordonseto@google.com>
Auto-Submit: Rudransh Dikshit <rudranshd@google.com>
Cr-Commit-Position: refs/heads/main@{#1183239}
This commit is contained in:
rudranshd
2023-08-14 19:10:47 +00:00
committed by Chromium LUCI CQ
parent c5680d1594
commit 0b26a038ea
10 changed files with 76 additions and 25 deletions

@ -2690,6 +2690,9 @@ Turning on battery saver to increase your battery life.
<message name="IDS_ASH_STATUS_TRAY_NETWORK" desc="The label used in the network dialog header. [CHAR_LIMIT=18]">
Network
</message>
<message name="IDS_ASH_STATUS_TRAY_INTERNET" desc="The label used in the network dialog header. [CHAR_LIMIT=18]">
Internet
</message>
<message name="IDS_ASH_QUICK_SETTINGS_KNOWN_NETWORKS" desc="The label used in the network detailed page for the known networks group">
Known networks
</message>

@ -0,0 +1 @@
c012adca227eb88f046bf6ee013d7ba8b71cbc82

@ -44,7 +44,7 @@ NetworkDetailedNetworkViewImpl::NetworkDetailedNetworkViewImpl(
NetworkDetailedNetworkView::Delegate* delegate)
: NetworkDetailedView(detailed_view_delegate,
delegate,
NetworkDetailedView::ListType::LIST_TYPE_NETWORK),
NetworkDetailedViewListType::LIST_TYPE_NETWORK),
NetworkDetailedNetworkView(delegate) {
RecordDetailedViewSection(DetailedViewSection::kDetailedSection);
}

@ -31,15 +31,15 @@ namespace ash {
NetworkDetailedView::NetworkDetailedView(
DetailedViewDelegate* detailed_view_delegate,
Delegate* delegate,
ListType list_type)
NetworkDetailedViewListType list_type)
: TrayDetailedView(detailed_view_delegate),
list_type_(list_type),
login_(Shell::Get()->session_controller()->login_status()),
model_(Shell::Get()->system_tray_model()->network_state_model()),
delegate_(delegate) {
CreateTitleRow(list_type_ == ListType::LIST_TYPE_NETWORK
? IDS_ASH_STATUS_TRAY_NETWORK
: IDS_ASH_STATUS_TRAY_VPN);
title_row_string_id_ = GetStringIdForNetworkDetailedViewTitleRow(list_type_);
CreateTitleRow(title_row_string_id_);
CreateScrollableList();
// TODO(b/207089013): add metrics for UI surface displayed.
}

@ -8,6 +8,7 @@
#include "ash/ash_export.h"
#include "ash/login_status.h"
#include "ash/system/network/network_info_bubble.h"
#include "ash/system/network/network_utils.h"
#include "ash/system/tray/tray_detailed_view.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
@ -52,11 +53,9 @@ class ASH_EXPORT NetworkDetailedView : public TrayDetailedView,
~NetworkDetailedView() override;
protected:
enum ListType { LIST_TYPE_NETWORK, LIST_TYPE_VPN };
NetworkDetailedView(DetailedViewDelegate* detailed_view_delegate,
Delegate* delegate,
ListType list_type);
NetworkDetailedViewListType list_type);
TrayNetworkStateModel* model() { return model_; }
@ -86,14 +85,18 @@ class ASH_EXPORT NetworkDetailedView : public TrayDetailedView,
bool ShouldIncludeDeviceAddresses() override;
void OnInfoBubbleDestroyed() override;
int title_row_string_id_for_testing() { return title_row_string_id_; }
// Type of list (all non-VPN netwoks, or only VPN networks).
const ListType list_type_;
const NetworkDetailedViewListType list_type_;
// Used to cache the login status on creation.
const LoginStatus login_;
raw_ptr<TrayNetworkStateModel, ExperimentalAsh> model_;
int title_row_string_id_;
raw_ptr<views::Button, ExperimentalAsh> info_button_ = nullptr;
raw_ptr<views::Button, ExperimentalAsh> settings_button_ = nullptr;

@ -6,6 +6,7 @@
#include <memory>
#include "ash/constants/ash_features.h"
#include "ash/login_status.h"
#include "ash/public/cpp/test/test_system_tray_client.h"
#include "ash/strings/grit/ash_strings.h"
@ -19,6 +20,7 @@
#include "base/memory/raw_ptr.h"
#include "base/run_loop.h"
#include "base/test/metrics/user_action_tester.h"
#include "base/test/scoped_feature_list.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/events/test/event_generator.h"
@ -45,8 +47,16 @@ class NetworkDetailedViewTest : public AshTestBase {
void SetUp() override {
AshTestBase::SetUp();
list_type_ = NetworkDetailedView::ListType::LIST_TYPE_NETWORK;
list_type_ = NetworkDetailedViewListType::LIST_TYPE_NETWORK;
}
void TearDown() override {
widget_.reset();
AshTestBase::TearDown();
}
void CreateNetworkDetailedView() {
network_detailed_view_ = new NetworkDetailedView(
&fake_detailed_view_delegate_, &fake_network_detailed_view_delegate_,
list_type_);
@ -58,12 +68,6 @@ class NetworkDetailedViewTest : public AshTestBase {
base::RunLoop().RunUntilIdle();
}
void TearDown() override {
widget_.reset();
AshTestBase::TearDown();
}
views::Button* FindSettingsButton() {
return FindViewById<views::Button*>(
NetworkDetailedView::NetworkDetailedViewChildId::kSettingsButton);
@ -78,6 +82,10 @@ class NetworkDetailedViewTest : public AshTestBase {
return network_detailed_view_->info_bubble_;
}
int GetTitleRowStringId() {
return network_detailed_view_->title_row_string_id_for_testing();
}
FakeNetworkDetailedViewDelegate* network_detailed_view_delegate() {
return &fake_network_detailed_view_delegate_;
}
@ -108,11 +116,13 @@ class NetworkDetailedViewTest : public AshTestBase {
raw_ptr<NetworkDetailedView, ExperimentalAsh> network_detailed_view_;
FakeNetworkDetailedViewDelegate fake_network_detailed_view_delegate_;
FakeDetailedViewDelegate fake_detailed_view_delegate_;
NetworkDetailedView::ListType list_type_;
NetworkDetailedViewListType list_type_;
base::UserActionTester user_action_tester_;
};
TEST_F(NetworkDetailedViewTest, PressingSettingsButtonOpensSettings) {
CreateNetworkDetailedView();
views::Button* settings_button = FindSettingsButton();
CheckHistogramBuckets(/*count=*/0);
@ -135,6 +145,8 @@ TEST_F(NetworkDetailedViewTest, PressingSettingsButtonOpensSettings) {
}
TEST_F(NetworkDetailedViewTest, PressingInfoButtonOpensInfoBubble) {
CreateNetworkDetailedView();
views::Button* info_button = FindInfoButton();
LeftClickOn(info_button);
for (int i = 0; i < 3; ++i) {
@ -150,4 +162,22 @@ TEST_F(NetworkDetailedViewTest, PressingInfoButtonOpensInfoBubble) {
}
}
TEST_F(NetworkDetailedViewTest, TitleRowString_InstantHotspotRebrandEnabled) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeature(features::kInstantHotspotRebrand);
CreateNetworkDetailedView();
EXPECT_EQ(GetTitleRowStringId(), IDS_ASH_STATUS_TRAY_INTERNET);
}
TEST_F(NetworkDetailedViewTest, TitleRowString_InstantHotspotRebrandDisabled) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndDisableFeature(features::kInstantHotspotRebrand);
CreateNetworkDetailedView();
EXPECT_EQ(GetTitleRowStringId(), IDS_ASH_STATUS_TRAY_NETWORK);
}
} // namespace ash

@ -187,7 +187,7 @@ class NetworkStateListDetailedView::InfoBubble
NetworkStateListDetailedView::NetworkStateListDetailedView(
DetailedViewDelegate* delegate,
ListType list_type,
NetworkDetailedViewListType list_type,
LoginStatus login)
: TrayDetailedView(delegate),
list_type_(list_type),
@ -219,9 +219,7 @@ const char* NetworkStateListDetailedView::GetClassName() const {
void NetworkStateListDetailedView::Init() {
CreateScrollableList();
CreateTitleRow(list_type_ == ListType::LIST_TYPE_NETWORK
? IDS_ASH_STATUS_TRAY_NETWORK
: IDS_ASH_STATUS_TRAY_VPN);
CreateTitleRow(GetStringIdForNetworkDetailedViewTitleRow(list_type_));
model_->AddObserver(this);
Update();

@ -8,6 +8,7 @@
#include <string>
#include "ash/login_status.h"
#include "ash/system/network/network_utils.h"
#include "ash/system/network/tray_network_state_observer.h"
#include "ash/system/tray/tray_detailed_view.h"
#include "base/memory/raw_ptr.h"
@ -49,10 +50,8 @@ class ASH_EXPORT NetworkStateListDetailedView
const char* GetClassName() const override;
protected:
enum ListType { LIST_TYPE_NETWORK, LIST_TYPE_VPN };
NetworkStateListDetailedView(DetailedViewDelegate* delegate,
ListType list_type,
NetworkDetailedViewListType list_type,
LoginStatus login);
// Refreshes the network list.
@ -107,7 +106,7 @@ class ASH_EXPORT NetworkStateListDetailedView
bool IsWifiEnabled();
// Type of list (all networks or vpn)
ListType list_type_;
NetworkDetailedViewListType list_type_;
// Track login state.
LoginStatus login_;

@ -40,6 +40,19 @@ std::string GetNetworkTypeName(
} // namespace
int GetStringIdForNetworkDetailedViewTitleRow(
NetworkDetailedViewListType list_type) {
if (base::FeatureList::IsEnabled(ash::features::kInstantHotspotRebrand)) {
return (list_type == NetworkDetailedViewListType::LIST_TYPE_NETWORK
? IDS_ASH_STATUS_TRAY_INTERNET
: IDS_ASH_STATUS_TRAY_VPN);
} else {
return (list_type == NetworkDetailedViewListType::LIST_TYPE_NETWORK
? IDS_ASH_STATUS_TRAY_NETWORK
: IDS_ASH_STATUS_TRAY_VPN);
}
}
void RecordNetworkRowClickedAction(NetworkRowClickedAction action) {
base::UmaHistogramEnumeration("ChromeOS.SystemTray.Network.RowClickedAction",
action);

@ -33,6 +33,8 @@ enum class DetailedViewSection {
kMaxValue = kDetailedSection
};
enum NetworkDetailedViewListType { LIST_TYPE_NETWORK, LIST_TYPE_VPN };
ASH_EXPORT void RecordNetworkRowClickedAction(NetworkRowClickedAction action);
ASH_EXPORT void RecordDetailedViewSection(DetailedViewSection section);
@ -56,6 +58,8 @@ ASH_EXPORT bool IsNetworkInhibited(
const chromeos::network_config::mojom::NetworkStatePropertiesPtr&
network_properties);
ASH_EXPORT int GetStringIdForNetworkDetailedViewTitleRow(
NetworkDetailedViewListType list_type);
} // namespace ash
#endif // ASH_SYSTEM_NETWORK_NETWORK_UTILS_H_