Commit ec79c47c authored by Josh Horwich's avatar Josh Horwich Committed by Commit Bot

arc: Update and add child-account opt-in strings

Update the ARC opt-in strings with minor tweaks, and use specific
strings for child-account scenarios.

Also remove the ability for a device owner to toggle the usage &
diagnostics collection setting from within ARC opt-in flow.

Bug: 805304
Test: Run ARC opt-in during new-user setup (OOBE)
Test: Run ARC opt-in for existing user ('in-product')
Change-Id: Ic8dcbbaddd5b690baea469b4688d38f3c2378a98
Reviewed-on: https://chromium-review.googlesource.com/c/1313764Reviewed-by: default avatarAchuith Bhandarkar <achuith@chromium.org>
Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Commit-Queue: Josh Horwich <jhorwich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607417}
parent 7282b88b
This diff is collapsed.
......@@ -29,6 +29,7 @@
#include "chrome/grit/generated_resources.h"
#include "components/consent_auditor/consent_auditor.h"
#include "components/user_manager/known_user.h"
#include "components/user_manager/user_manager.h"
#include "extensions/browser/extension_registry.h"
#include "services/identity/public/cpp/identity_manager.h"
#include "ui/base/l10n/l10n_util.h"
......@@ -451,6 +452,9 @@ void ArcSupportHost::SetRequestOpenAppCallbackForTesting(
bool ArcSupportHost::Initialize() {
DCHECK(message_host_);
const bool is_child =
user_manager::UserManager::Get()->IsLoggedInAsChildUser();
auto loadtime_data = std::make_unique<base::DictionaryValue>();
loadtime_data->SetString("appWindow", l10n_util::GetStringUTF16(
IDS_ARC_PLAYSTORE_ICON_TITLE_BETA));
......@@ -491,19 +495,29 @@ bool ArcSupportHost::Initialize() {
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE));
loadtime_data->SetString(
"textMetricsEnabled",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_METRICS_ENABLED));
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_DIALOG_METRICS_ENABLED_CHILD
: IDS_ARC_OPT_IN_DIALOG_METRICS_ENABLED));
loadtime_data->SetString(
"textMetricsDisabled",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_METRICS_DISABLED));
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_DIALOG_METRICS_DISABLED_CHILD
: IDS_ARC_OPT_IN_DIALOG_METRICS_DISABLED));
loadtime_data->SetString(
"textMetricsManagedEnabled",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_ENABLED));
loadtime_data->SetString("textMetricsManagedDisabled",
l10n_util::GetStringUTF16(
IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_DISABLED));
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_ENABLED_CHILD
: IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_ENABLED));
loadtime_data->SetString(
"textMetricsManagedDisabled",
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_DISABLED_CHILD
: IDS_ARC_OPT_IN_DIALOG_METRICS_MANAGED_DISABLED));
loadtime_data->SetString(
"textBackupRestore",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE));
l10n_util::GetStringUTF16(is_child
? IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE_CHILD
: IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE));
loadtime_data->SetString("textPaiService",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_PAI));
loadtime_data->SetString(
......@@ -511,7 +525,8 @@ bool ArcSupportHost::Initialize() {
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_GOOGLE_SERVICE_CONFIRMATION));
loadtime_data->SetString(
"textLocationService",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LOCATION_SETTING));
l10n_util::GetStringUTF16(is_child ? IDS_ARC_OPT_IN_LOCATION_SETTING_CHILD
: IDS_ARC_OPT_IN_LOCATION_SETTING));
loadtime_data->SetString(
"serverError",
l10n_util::GetStringUTF16(IDS_ARC_SERVER_COMMUNICATION_ERROR));
......@@ -520,13 +535,19 @@ bool ArcSupportHost::Initialize() {
l10n_util::GetStringUTF16(IDS_CONTROLLED_SETTING_POLICY));
loadtime_data->SetString(
"learnMoreStatistics",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS));
l10n_util::GetStringUTF16(is_child
? IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS));
loadtime_data->SetString(
"learnMoreBackupAndRestore",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE));
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE));
loadtime_data->SetString(
"learnMoreLocationServices",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES));
l10n_util::GetStringUTF16(
is_child ? IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES));
loadtime_data->SetString(
"learnMorePaiService",
l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_LEARN_MORE_PAI_SERVICE));
......@@ -642,6 +663,7 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
auto* identity_manager = IdentityManagerFactory::GetForProfile(profile_);
DCHECK(identity_manager->HasPrimaryAccount());
std::string account_id = identity_manager->GetPrimaryAccountId();
bool is_child = user_manager::UserManager::Get()->IsLoggedInAsChildUser();
// Record acceptance of ToS if it was shown to the user, otherwise simply
// record acceptance of an empty ToS.
......@@ -666,7 +688,8 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
backup_and_restore_consent.set_confirmation_grd_id(
IDS_ARC_OPT_IN_DIALOG_BUTTON_AGREE);
backup_and_restore_consent.add_description_grd_ids(
IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
is_child ? IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE_CHILD
: IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
backup_and_restore_consent.set_status(is_backup_restore_enabled
? UserConsentTypes::GIVEN
: UserConsentTypes::NOT_GIVEN);
......@@ -684,7 +707,8 @@ void ArcSupportHost::OnMessage(const base::DictionaryValue& message) {
location_service_consent.set_confirmation_grd_id(
IDS_ARC_OPT_IN_DIALOG_BUTTON_AGREE);
location_service_consent.add_description_grd_ids(
IDS_ARC_OPT_IN_LOCATION_SETTING);
is_child ? IDS_ARC_OPT_IN_LOCATION_SETTING_CHILD
: IDS_ARC_OPT_IN_LOCATION_SETTING);
location_service_consent.set_status(is_location_service_enabled
? UserConsentTypes::GIVEN
: UserConsentTypes::NOT_GIVEN);
......
......@@ -546,8 +546,7 @@ bool FakeChromeUserManager::IsLoggedInAsUserWithGaiaAccount() const {
}
bool FakeChromeUserManager::IsLoggedInAsChildUser() const {
NOTREACHED();
return false;
return current_user_child_;
}
bool FakeChromeUserManager::IsLoggedInAsPublicAccount() const {
......
......@@ -192,6 +192,9 @@ class FakeChromeUserManager : public ChromeUserManager {
void set_current_user_ephemeral(bool user_ephemeral) {
current_user_ephemeral_ = user_ephemeral;
}
void set_current_user_child(bool child_user) {
current_user_child_ = child_user;
}
void set_is_enterprise_managed(bool is_enterprise_managed) {
is_enterprise_managed_ = is_enterprise_managed;
......@@ -208,6 +211,7 @@ class FakeChromeUserManager : public ChromeUserManager {
bool fake_ephemeral_users_enabled_ = false;
bool current_user_new_ = false;
bool current_user_ephemeral_ = false;
bool current_user_child_ = false;
MultiProfileUserController* multi_profile_user_controller_ = nullptr;
......
......@@ -220,7 +220,10 @@ class MetricsPreferenceCheckbox extends PreferenceCheckbox {
super.onPreferenceChanged(isEnabled, isManaged);
// Hide the checkbox if it is not allowed to (re-)enable.
var canEnable = !isEnabled && !isManaged;
// TODO(jhorwich) Remove checkbox functionality from the metrics notice as
// we've removed the ability for a device owner to enable it during ARC
// setup.
var canEnable = false;
this.checkbox_.hidden = !canEnable;
this.textLabel_.hidden = canEnable;
var label = canEnable ? this.label_ : this.textLabel_;
......
......@@ -28,6 +28,7 @@
#include "components/consent_auditor/consent_auditor.h"
#include "components/login/localized_values_builder.h"
#include "components/prefs/pref_service.h"
#include "components/user_manager/user_manager.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
#include "services/identity/public/cpp/identity_manager.h"
......@@ -51,7 +52,9 @@ const char kJsScreenPath[] = "login.ArcTermsOfServiceScreen";
namespace chromeos {
ArcTermsOfServiceScreenHandler::ArcTermsOfServiceScreenHandler()
: BaseScreenHandler(kScreenId) {
: BaseScreenHandler(kScreenId),
is_child_account_(
user_manager::UserManager::Get()->IsLoggedInAsChildUser()) {
set_call_js_prefix(kJsScreenPath);
}
......@@ -123,8 +126,12 @@ void ArcTermsOfServiceScreenHandler::DeclareLocalizedValues(
builder->Add("arcTermsOfServiceNextButton",
IDS_ARC_OPT_IN_DIALOG_BUTTON_NEXT);
builder->Add("arcPolicyLink", IDS_ARC_OPT_IN_PRIVACY_POLICY_LINK);
builder->Add("arcTextBackupRestore", IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
builder->Add("arcTextLocationService", IDS_ARC_OPT_IN_LOCATION_SETTING);
builder->Add("arcTextBackupRestore",
is_child_account_ ? IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE_CHILD
: IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
builder->Add("arcTextLocationService",
is_child_account_ ? IDS_ARC_OPT_IN_LOCATION_SETTING_CHILD
: IDS_ARC_OPT_IN_LOCATION_SETTING);
builder->Add("arcTextPaiService", IDS_ARC_OPT_IN_PAI);
builder->Add("arcTextGoogleServiceConfirmation",
IDS_ARC_OPT_IN_GOOGLE_SERVICE_CONFIRMATION);
......@@ -132,11 +139,17 @@ void ArcTermsOfServiceScreenHandler::DeclareLocalizedValues(
IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_ENABLED);
builder->Add("arcAcceptAndContinueGoogleServiceConfirmation",
IDS_ARC_OPT_IN_ACCEPT_AND_CONTINUE_GOOGLE_SERVICE_CONFIRMATION);
builder->Add("arcLearnMoreStatistics", IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS);
builder->Add("arcLearnMoreStatistics",
is_child_account_ ? IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_STATISTICS);
builder->Add("arcLearnMoreLocationService",
IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES);
is_child_account_
? IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_LOCATION_SERVICES);
builder->Add("arcLearnMoreBackupAndRestore",
IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE);
is_child_account_
? IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE_CHILD
: IDS_ARC_OPT_IN_LEARN_MORE_BACKUP_AND_RESTORE);
builder->Add("arcLearnMorePaiService", IDS_ARC_OPT_IN_LEARN_MORE_PAI_SERVICE);
builder->Add("arcOverlayClose", IDS_ARC_OOBE_TERMS_POPUP_HELP_CLOSE_BUTTON);
builder->Add("arcOverlayLoading", IDS_ARC_POPUP_HELP_LOADING);
......@@ -159,18 +172,26 @@ void ArcTermsOfServiceScreenHandler::OnMetricsModeChanged(bool enabled,
// managed flag.
const bool owner_profile = !owner.is_valid() || user->GetAccountId() == owner;
if (owner_profile && !managed && !enabled) {
CallJS("setMetricsMode", base::string16(), false);
int message_id;
if (owner_profile && !managed) {
if (is_child_account_) {
message_id = enabled ? IDS_ARC_OOBE_TERMS_DIALOG_METRICS_ENABLED_CHILD
: IDS_ARC_OOBE_TERMS_DIALOG_METRICS_DISABLED_CHILD;
} else {
message_id = enabled ? IDS_ARC_OOBE_TERMS_DIALOG_METRICS_ENABLED
: IDS_ARC_OOBE_TERMS_DIALOG_METRICS_DISABLED;
}
} else {
int message_id;
if (owner_profile && !managed) {
message_id = IDS_ARC_OOBE_TERMS_DIALOG_METRICS_ENABLED;
if (is_child_account_) {
message_id =
enabled ? IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_ENABLED_CHILD
: IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_DISABLED_CHILD;
} else {
message_id = enabled ? IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_ENABLED
: IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_DISABLED;
}
CallJS("setMetricsMode", l10n_util::GetStringUTF16(message_id), true);
}
CallJS("setMetricsMode", l10n_util::GetStringUTF16(message_id), true);
}
void ArcTermsOfServiceScreenHandler::OnBackupAndRestoreModeChanged(
......@@ -324,7 +345,8 @@ void ArcTermsOfServiceScreenHandler::RecordConsents(
backup_and_restore_consent.set_confirmation_grd_id(
IDS_ARC_OOBE_TERMS_BUTTON_ACCEPT);
backup_and_restore_consent.add_description_grd_ids(
IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
is_child_account_ ? IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE_CHILD
: IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE);
backup_and_restore_consent.set_status(backup_accepted
? UserConsentTypes::GIVEN
: UserConsentTypes::NOT_GIVEN);
......@@ -338,7 +360,8 @@ void ArcTermsOfServiceScreenHandler::RecordConsents(
location_service_consent.set_confirmation_grd_id(
IDS_ARC_OOBE_TERMS_BUTTON_ACCEPT);
location_service_consent.add_description_grd_ids(
IDS_ARC_OPT_IN_LOCATION_SETTING);
is_child_account_ ? IDS_ARC_OPT_IN_LOCATION_SETTING
: IDS_ARC_OPT_IN_LOCATION_SETTING);
location_service_consent.set_status(location_accepted
? UserConsentTypes::GIVEN
: UserConsentTypes::NOT_GIVEN);
......
......@@ -120,6 +120,9 @@ class ArcTermsOfServiceScreenHandler
bool backup_restore_managed_ = false;
bool location_services_managed_ = false;
// To track if a child account is being set up.
bool is_child_account_;
std::unique_ptr<arc::ArcOptInPreferenceHandler> pref_handler_;
DISALLOW_COPY_AND_ASSIGN(ArcTermsOfServiceScreenHandler);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment