Commit 60a7838b authored by Michael Giuffrida's avatar Michael Giuffrida Committed by Commit Bot

Add demo apps disclaimer to Demo Mode ARC++ setup

Bug: 945438
Change-Id: I314f5aecb5e12fa17fc033b51af0305c80039b47
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1568310Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Reviewed-by: default avatarAga Wronska <agawronska@chromium.org>
Commit-Queue: Michael Giuffrida <michaelpg@chromium.org>
Auto-Submit: Michael Giuffrida <michaelpg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652626}
parent 4371c7d5
...@@ -2870,6 +2870,9 @@ ...@@ -2870,6 +2870,9 @@
<message name="IDS_ARC_OOBE_TERMS_DIALOG_METRICS_DISABLED_CHILD" desc="Message in the Arc Terms OOBE dialog in case metrics disabled on the device, and a child account is in use."> <message name="IDS_ARC_OOBE_TERMS_DIALOG_METRICS_DISABLED_CHILD" desc="Message in the Arc Terms OOBE dialog in case metrics disabled on the device, and a child account is in use.">
Send usage and diagnostic data. Help improve your child's Android experience by automatically sending diagnostic, device, and app usage data to Google. This won't be used to identify your child and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If additional Web &#38; App Activity setting is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1">&lt;a href="#" id="learn-more-link-metrics"&gt;</ph>Learn More<ph name="END_LINK1">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph> Send usage and diagnostic data. Help improve your child's Android experience by automatically sending diagnostic, device, and app usage data to Google. This won't be used to identify your child and will help system and app stability and other improvements. Some aggregate data will also help Google apps and partners, such as Android developers. If additional Web &#38; App Activity setting is turned on for your child, this data may be saved to their Google Account. <ph name="BEGIN_LINK1">&lt;a href="#" id="learn-more-link-metrics"&gt;</ph>Learn More<ph name="END_LINK1">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>
</message> </message>
<message name="IDS_ARC_OOBE_TERMS_DIALOG_DEMO_APPS" desc="Addendum to the metrics disclaimer in the Arc Terms OOBE dialog during Demo Mode setup explaining that demo apps have their own policies for data collection.">
Note that Android, Play, and associated apps are governed by their own data collection and use policies.
</message>
<message name="IDS_ARC_OPT_IN_LOCATION_SETTING" desc="Message in the opt-in dialog for Android apps for the user to turn on Google location services."> <message name="IDS_ARC_OPT_IN_LOCATION_SETTING" desc="Message in the opt-in dialog for Android apps for the user to turn on Google location services.">
Use location. Allow apps and services with location permission to use your device’s location. Google may collect location data periodically and use this data in an anonymous way to improve location accuracy and location-based services. <ph name="BEGIN_LINK1">&lt;a href="#" id="learn-more-link-location-service"&gt;</ph>Learn More<ph name="END_LINK1">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph> Use location. Allow apps and services with location permission to use your device’s location. Google may collect location data periodically and use this data in an anonymous way to improve location accuracy and location-based services. <ph name="BEGIN_LINK1">&lt;a href="#" id="learn-more-link-location-service"&gt;</ph>Learn More<ph name="END_LINK1">&lt;/a&gt;<ex>&lt;/a&gt;</ex></ph>
</message> </message>
......
c06a1511e87abcc0711c42bb16cb486fa5cd78b8
\ No newline at end of file
...@@ -71,7 +71,7 @@ enum class JSExecution { kSync, kAsync }; ...@@ -71,7 +71,7 @@ enum class JSExecution { kSync, kAsync };
enum class OobeButton { kBack, kNext, kText }; enum class OobeButton { kBack, kNext, kText };
// Dialogs that are a part of Demo Mode setup screens. // Dialogs that are a part of Demo Mode setup screens.
enum class DemoSetupDialog { kNetwork, kEula, kProgress, kError }; enum class DemoSetupDialog { kNetwork, kEula, kArcTos, kProgress, kError };
// Returns the tag of the given |button| type. // Returns the tag of the given |button| type.
std::string ButtonToTag(OobeButton button) { std::string ButtonToTag(OobeButton button) {
...@@ -94,6 +94,8 @@ std::string DialogToStringId(DemoSetupDialog dialog) { ...@@ -94,6 +94,8 @@ std::string DialogToStringId(DemoSetupDialog dialog) {
return "networkDialog"; return "networkDialog";
case DemoSetupDialog::kEula: case DemoSetupDialog::kEula:
return "eulaDialog"; return "eulaDialog";
case DemoSetupDialog::kArcTos:
return "arc-tos-dialog";
case DemoSetupDialog::kProgress: case DemoSetupDialog::kProgress:
return "demoSetupProgressDialog"; return "demoSetupProgressDialog";
case DemoSetupDialog::kError: case DemoSetupDialog::kError:
...@@ -169,23 +171,37 @@ class DemoSetupTest : public LoginManagerTest { ...@@ -169,23 +171,37 @@ class DemoSetupTest : public LoginManagerTest {
return !test::OobeJS().GetBool(kIsConfirmationDialogHiddenQuery); return !test::OobeJS().GetBool(kIsConfirmationDialogHiddenQuery);
} }
// TODO(michaelpg): Replace this with IsScreenDialogElementVisible, which is
// more robust because it checks whether the element is actually rendered.
// Do this after a branch in case it introduces flakiness.
bool IsScreenDialogElementShown(OobeScreen screen, bool IsScreenDialogElementShown(OobeScreen screen,
DemoSetupDialog dialog, DemoSetupDialog dialog,
const std::string& element_selector) { const std::string& element_selector) {
const std::string element = base::StrCat( const std::string element = base::StrCat(
{ScreenToContentQuery(screen), ".$.", DialogToStringId(dialog), {ScreenToContentQuery(screen), ".$['", DialogToStringId(dialog),
".querySelector('", element_selector, "')"}); "'].querySelector('", element_selector, "')"});
const std::string query = const std::string query =
base::StrCat({"!!", element, " && !", element, ".hidden"}); base::StrCat({"!!", element, " && !", element, ".hidden"});
return test::OobeJS().GetBool(query); return test::OobeJS().GetBool(query);
} }
bool IsScreenDialogElementVisible(OobeScreen screen,
DemoSetupDialog dialog,
const std::string& element_selector) {
const std::string element = base::StrCat(
{ScreenToContentQuery(screen), ".$['", DialogToStringId(dialog),
"'].querySelector('", element_selector, "')"});
const std::string query =
base::StrCat({"!!", element, " && ", element, ".offsetHeight > 0"});
return test::OobeJS().GetBool(query);
}
bool IsScreenDialogElementEnabled(OobeScreen screen, bool IsScreenDialogElementEnabled(OobeScreen screen,
DemoSetupDialog dialog, DemoSetupDialog dialog,
const std::string& element_selector) { const std::string& element_selector) {
const std::string element = base::StrCat( const std::string element = base::StrCat(
{ScreenToContentQuery(screen), ".$.", DialogToStringId(dialog), {ScreenToContentQuery(screen), ".$['", DialogToStringId(dialog),
".querySelector('", element_selector, "')"}); "'].querySelector('", element_selector, "')"});
const std::string query = const std::string query =
base::StrCat({"!!", element, " && !", element, ".disabled"}); base::StrCat({"!!", element, " && !", element, ".disabled"});
return test::OobeJS().GetBool(query); return test::OobeJS().GetBool(query);
...@@ -210,8 +226,8 @@ class DemoSetupTest : public LoginManagerTest { ...@@ -210,8 +226,8 @@ class DemoSetupTest : public LoginManagerTest {
bool IsErrorMessageShown(int error_message_id, int recovery_message_id) { bool IsErrorMessageShown(int error_message_id, int recovery_message_id) {
const std::string element_selector = const std::string element_selector =
base::StrCat({ScreenToContentQuery(OobeScreen::SCREEN_OOBE_DEMO_SETUP), base::StrCat({ScreenToContentQuery(OobeScreen::SCREEN_OOBE_DEMO_SETUP),
".$.", DialogToStringId(DemoSetupDialog::kError), ".$['", DialogToStringId(DemoSetupDialog::kError),
".querySelector('div[slot=subtitle]')"}); "'].querySelector('div[slot=subtitle]')"});
const std::string query = base::StrCat( const std::string query = base::StrCat(
{"!!", element_selector, " && ", element_selector, ".innerHTML == '", {"!!", element_selector, " && ", element_selector, ".innerHTML == '",
l10n_util::GetStringUTF8(error_message_id), " ", l10n_util::GetStringUTF8(error_message_id), " ",
...@@ -297,8 +313,8 @@ class DemoSetupTest : public LoginManagerTest { ...@@ -297,8 +313,8 @@ class DemoSetupTest : public LoginManagerTest {
const std::string& button_selector, const std::string& button_selector,
JSExecution execution) { JSExecution execution) {
const std::string query = base::StrCat( const std::string query = base::StrCat(
{ScreenToContentQuery(screen), ".$.", DialogToStringId(dialog), {ScreenToContentQuery(screen), ".$['", DialogToStringId(dialog),
".querySelector('", button_selector, "').click();"}); "'].querySelector('", button_selector, "').click();"});
switch (execution) { switch (execution) {
case JSExecution::kAsync: case JSExecution::kAsync:
test::ExecuteOobeJSAsync(query); test::ExecuteOobeJSAsync(query);
...@@ -345,8 +361,8 @@ class DemoSetupTest : public LoginManagerTest { ...@@ -345,8 +361,8 @@ class DemoSetupTest : public LoginManagerTest {
void WaitForScreenDialog(OobeScreen screen, DemoSetupDialog dialog) { void WaitForScreenDialog(OobeScreen screen, DemoSetupDialog dialog) {
const std::string query = const std::string query =
base::StrCat({"!", ScreenToContentQuery(screen), ".$.", base::StrCat({"!", ScreenToContentQuery(screen), ".$['",
DialogToStringId(dialog), ".hidden"}); DialogToStringId(dialog), "'].hidden"});
WaitForJsCondition(query); WaitForJsCondition(query);
} }
...@@ -540,6 +556,11 @@ IN_PROC_BROWSER_TEST_F(DemoSetupTest, OnlineSetupFlowSuccess) { ...@@ -540,6 +556,11 @@ IN_PROC_BROWSER_TEST_F(DemoSetupTest, OnlineSetupFlowSuccess) {
EXPECT_TRUE(IsScreenShown(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE)); EXPECT_TRUE(IsScreenShown(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE));
SetPlayStoreTermsForTesting(); SetPlayStoreTermsForTesting();
EXPECT_TRUE(IsScreenDialogElementVisible(
OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, DemoSetupDialog::kArcTos,
"#arc-tos-metrics-demo-apps"));
ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE,
"#arc-tos-next-button", JSExecution::kSync); "#arc-tos-next-button", JSExecution::kSync);
ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE,
...@@ -893,6 +914,11 @@ IN_PROC_BROWSER_TEST_F(DemoSetupTest, OfflineSetupFlowSuccess) { ...@@ -893,6 +914,11 @@ IN_PROC_BROWSER_TEST_F(DemoSetupTest, OfflineSetupFlowSuccess) {
EXPECT_TRUE(IsScreenShown(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE)); EXPECT_TRUE(IsScreenShown(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE));
SetPlayStoreTermsForTesting(); SetPlayStoreTermsForTesting();
EXPECT_TRUE(IsScreenDialogElementVisible(
OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, DemoSetupDialog::kArcTos,
"#arc-tos-metrics-demo-apps"));
ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE,
"#arc-tos-next-button", JSExecution::kSync); "#arc-tos-next-button", JSExecution::kSync);
ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE, ClickOobeButtonWithSelector(OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE,
......
...@@ -46,7 +46,8 @@ p { ...@@ -46,7 +46,8 @@ p {
display: none; display: none;
} }
#arc-tos-dialog:not(.arc-tos-for-demo-mode) #arc-tos-back-button { #arc-tos-dialog:not(.arc-tos-for-demo-mode) #arc-tos-back-button,
#arc-tos-dialog:not(.arc-tos-for-demo-mode) #arc-tos-metrics-demo-apps {
display: none; display: none;
} }
......
...@@ -26,6 +26,10 @@ ...@@ -26,6 +26,10 @@
<div class="parameter-section arc-tos-content"> <div class="parameter-section arc-tos-content">
<p id="arc-text-metrics"></p> <p id="arc-text-metrics"></p>
</div> </div>
<div id="arc-tos-metrics-demo-apps"
class="parameter-section arc-tos-content">
<p i18n-content="arcTextMetricsDemoApps"></p>
</div>
<div id="arc-backup-service" class="parameter-section arc-tos-content"> <div id="arc-backup-service" class="parameter-section arc-tos-content">
<cr-checkbox id="arc-enable-backup-restore"> <cr-checkbox id="arc-enable-backup-restore">
<p i18n-values=".innerHTML:arcTextBackupRestore"></p> <p i18n-values=".innerHTML:arcTextBackupRestore"></p>
......
...@@ -133,6 +133,7 @@ void ArcTermsOfServiceScreenHandler::DeclareLocalizedValues( ...@@ -133,6 +133,7 @@ void ArcTermsOfServiceScreenHandler::DeclareLocalizedValues(
builder->Add("arcTextReviewSettings", IDS_ARC_REVIEW_SETTINGS); builder->Add("arcTextReviewSettings", IDS_ARC_REVIEW_SETTINGS);
builder->Add("arcTextMetricsManagedEnabled", builder->Add("arcTextMetricsManagedEnabled",
IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_ENABLED); IDS_ARC_OOBE_TERMS_DIALOG_METRICS_MANAGED_ENABLED);
builder->Add("arcTextMetricsDemoApps", IDS_ARC_OOBE_TERMS_DIALOG_DEMO_APPS);
builder->Add("arcAcceptAndContinueGoogleServiceConfirmation", builder->Add("arcAcceptAndContinueGoogleServiceConfirmation",
IDS_ARC_OPT_IN_ACCEPT_AND_CONTINUE_GOOGLE_SERVICE_CONFIRMATION); IDS_ARC_OPT_IN_ACCEPT_AND_CONTINUE_GOOGLE_SERVICE_CONFIRMATION);
builder->Add("arcLearnMoreStatistics", builder->Add("arcLearnMoreStatistics",
......
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