Commit 59d2a907 authored by Caitlin Fischer's avatar Caitlin Fischer Committed by Commit Bot

Update the UserSignedIn test to check for a specific VariationID.

The status quo test compares the actual header with the header returned
by GetClientDataHeaders(). However, as discussed in [1], the important
thing to verify is that the GOOGLE_WEB_PROPERTIES_SIGNED_ID-associated
VariationID is included in the header when expected.

Similarly, update the UserNotSignedIn test to check that the ID is not
included in the header.

Also, remove CreateTrialAndAssociateId() from the browser test file
since it now exists in variations_test_utils.h.

[1] https://chromium-review.googlesource.com/c/chromium/src/+/2461906/comment/d6233bfd_454a08ff/

Bug: 1134444
Change-Id: I22101a138f930e2b1cfaf4ba3f74211eb87c9a49
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2508338Reviewed-by: default avatarAlexei Svitkine <asvitkine@chromium.org>
Reviewed-by: default avatarDavid Benjamin <davidben@chromium.org>
Commit-Queue: Caitlin Fischer <caitlinfischer@google.com>
Cr-Commit-Position: refs/heads/master@{#823554}
parent 9f35be80
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/stl_util.h"
#include "base/strings/strcat.h" #include "base/strings/strcat.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
...@@ -40,6 +41,7 @@ ...@@ -40,6 +41,7 @@
#include "components/variations/variations.mojom.h" #include "components/variations/variations.mojom.h"
#include "components/variations/variations_features.h" #include "components/variations/variations_features.h"
#include "components/variations/variations_ids_provider.h" #include "components/variations/variations_ids_provider.h"
#include "components/variations/variations_test_utils.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "content/public/test/browser_test.h" #include "content/public/test/browser_test.h"
...@@ -381,30 +383,11 @@ VariationsHttpHeadersBrowserTest::RequestHandler( ...@@ -381,30 +383,11 @@ VariationsHttpHeadersBrowserTest::RequestHandler(
return http_response; return http_response;
} }
scoped_refptr<base::FieldTrial> CreateTrialAndAssociateId( // Associates |id| with GOOGLE_WEB_PROPERTIES_SIGNED_IN and creates a field
const std::string& trial_name, // trial for it.
const std::string& default_group_name, void CreateGoogleSignedInFieldTrial(variations::VariationID id) {
variations::IDCollectionKey key, scoped_refptr<base::FieldTrial> trial_1(variations::CreateTrialAndAssociateId(
variations::VariationID id) { "t1", "g1", variations::GOOGLE_WEB_PROPERTIES_SIGNED_IN, id));
AssociateGoogleVariationID(key, trial_name, default_group_name, id);
scoped_refptr<base::FieldTrial> trial(
base::FieldTrialList::CreateFieldTrial(trial_name, default_group_name));
EXPECT_TRUE(trial);
if (trial) {
// Ensure the trial is registered under the correct key so we can look it
// up.
trial->group();
}
return trial;
}
// Sets up a FieldTrial for Google properites when signed in.
void CreateGoogleSignedInFieldTrial() {
const std::string default_name = "default";
scoped_refptr<base::FieldTrial> trial_1(CreateTrialAndAssociateId(
"t1", default_name, variations::GOOGLE_WEB_PROPERTIES_SIGNED_IN, 123));
auto* provider = variations::VariationsIdsProvider::GetInstance(); auto* provider = variations::VariationsIdsProvider::GetInstance();
variations::mojom::VariationsHeadersPtr signed_in_headers = variations::mojom::VariationsHeadersPtr signed_in_headers =
...@@ -425,13 +408,13 @@ void CreateGoogleSignedInFieldTrial() { ...@@ -425,13 +408,13 @@ void CreateGoogleSignedInFieldTrial() {
// Creates FieldTrials associatedd with the FIRST_PARTY IDCollectionKeys and // Creates FieldTrials associatedd with the FIRST_PARTY IDCollectionKeys and
// their corresponding ANY_CONTEXT keys. // their corresponding ANY_CONTEXT keys.
void CreateFieldTrialsWithDifferentVisibilities() { void CreateFieldTrialsWithDifferentVisibilities() {
scoped_refptr<base::FieldTrial> trial_1(CreateTrialAndAssociateId( scoped_refptr<base::FieldTrial> trial_1(variations::CreateTrialAndAssociateId(
"t1", "g1", variations::GOOGLE_WEB_PROPERTIES_ANY_CONTEXT, 11)); "t1", "g1", variations::GOOGLE_WEB_PROPERTIES_ANY_CONTEXT, 11));
scoped_refptr<base::FieldTrial> trial_2(CreateTrialAndAssociateId( scoped_refptr<base::FieldTrial> trial_2(variations::CreateTrialAndAssociateId(
"t2", "g2", variations::GOOGLE_WEB_PROPERTIES_FIRST_PARTY, 22)); "t2", "g2", variations::GOOGLE_WEB_PROPERTIES_FIRST_PARTY, 22));
scoped_refptr<base::FieldTrial> trial_3(CreateTrialAndAssociateId( scoped_refptr<base::FieldTrial> trial_3(variations::CreateTrialAndAssociateId(
"t3", "g3", variations::GOOGLE_WEB_PROPERTIES_TRIGGER_ANY_CONTEXT, 33)); "t3", "g3", variations::GOOGLE_WEB_PROPERTIES_TRIGGER_ANY_CONTEXT, 33));
scoped_refptr<base::FieldTrial> trial_4(CreateTrialAndAssociateId( scoped_refptr<base::FieldTrial> trial_4(variations::CreateTrialAndAssociateId(
"t4", "g4", variations::GOOGLE_WEB_PROPERTIES_TRIGGER_FIRST_PARTY, 44)); "t4", "g4", variations::GOOGLE_WEB_PROPERTIES_TRIGGER_FIRST_PARTY, 44));
auto* provider = variations::VariationsIdsProvider::GetInstance(); auto* provider = variations::VariationsIdsProvider::GetInstance();
...@@ -510,7 +493,8 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, Incognito) { ...@@ -510,7 +493,8 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, Incognito) {
IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserSignedIn) { IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserSignedIn) {
// Ensure GetClientDataHeader() returns different values when signed in vs // Ensure GetClientDataHeader() returns different values when signed in vs
// not signed in. // not signed in.
CreateGoogleSignedInFieldTrial(); variations::VariationID signed_in_id = 8;
CreateGoogleSignedInFieldTrial(signed_in_id);
// Sign the user in. // Sign the user in.
signin::MakePrimaryAccountAvailable( signin::MakePrimaryAccountAvailable(
...@@ -523,18 +507,44 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserSignedIn) { ...@@ -523,18 +507,44 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserSignedIn) {
GetReceivedHeader(GetGoogleUrl(), "X-Client-Data"); GetReceivedHeader(GetGoogleUrl(), "X-Client-Data");
ASSERT_TRUE(header); ASSERT_TRUE(header);
// Verify that the received header contains the ID.
std::set<variations::VariationID> ids;
std::set<variations::VariationID> trigger_ids;
ASSERT_TRUE(
variations::ExtractVariationIds(header.value(), &ids, &trigger_ids));
EXPECT_TRUE(base::Contains(ids, signed_in_id));
// Verify that both headers returned by GetClientDataHeaders() contain the ID.
variations::mojom::VariationsHeadersPtr headers = variations::mojom::VariationsHeadersPtr headers =
variations::VariationsIdsProvider::GetInstance()->GetClientDataHeaders( variations::VariationsIdsProvider::GetInstance()->GetClientDataHeaders(
/*is_signed_in=*/true); /*is_signed_in=*/true);
EXPECT_EQ(*header, headers->headers_map.at( const std::string variations_header_first_party = headers->headers_map.at(
variations::mojom::GoogleWebVisibility::ANY)); variations::mojom::GoogleWebVisibility::FIRST_PARTY);
const std::string variations_header_any_context =
headers->headers_map.at(variations::mojom::GoogleWebVisibility::ANY);
std::set<variations::VariationID> ids_first_party;
std::set<variations::VariationID> trigger_ids_first_party;
ASSERT_TRUE(variations::ExtractVariationIds(variations_header_first_party,
&ids_first_party,
&trigger_ids_first_party));
EXPECT_TRUE(base::Contains(ids_first_party, signed_in_id));
std::set<variations::VariationID> ids_any_context;
std::set<variations::VariationID> trigger_ids_any_context;
ASSERT_TRUE(variations::ExtractVariationIds(variations_header_any_context,
&ids_any_context,
&trigger_ids_any_context));
EXPECT_TRUE(base::Contains(ids_any_context, signed_in_id));
} }
IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserNotSignedIn) { IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserNotSignedIn) {
// Ensure GetClientDataHeader() returns different values when signed in vs // Ensure GetClientDataHeader() returns different values when signed in vs
// not signed in. // not signed in.
CreateGoogleSignedInFieldTrial(); variations::VariationID signed_in_id = 8;
CreateGoogleSignedInFieldTrial(signed_in_id);
// By default the user is not signed in. // By default the user is not signed in.
ui_test_utils::NavigateToURL(browser(), GetGoogleUrl()); ui_test_utils::NavigateToURL(browser(), GetGoogleUrl());
...@@ -543,12 +553,38 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserNotSignedIn) { ...@@ -543,12 +553,38 @@ IN_PROC_BROWSER_TEST_F(VariationsHttpHeadersBrowserTest, UserNotSignedIn) {
GetReceivedHeader(GetGoogleUrl(), "X-Client-Data"); GetReceivedHeader(GetGoogleUrl(), "X-Client-Data");
ASSERT_TRUE(header); ASSERT_TRUE(header);
// Verify that the received header does not contain the ID.
std::set<variations::VariationID> ids;
std::set<variations::VariationID> trigger_ids;
ASSERT_TRUE(
variations::ExtractVariationIds(header.value(), &ids, &trigger_ids));
EXPECT_FALSE(base::Contains(ids, signed_in_id));
// Verify that both headers returned by GetClientDataHeaders() do not contain
// the ID.
variations::mojom::VariationsHeadersPtr headers = variations::mojom::VariationsHeadersPtr headers =
variations::VariationsIdsProvider::GetInstance()->GetClientDataHeaders( variations::VariationsIdsProvider::GetInstance()->GetClientDataHeaders(
/*is_signed_in=*/false); /*is_signed_in=*/false);
EXPECT_EQ(*header, headers->headers_map.at( const std::string variations_header_first_party = headers->headers_map.at(
variations::mojom::GoogleWebVisibility::ANY)); variations::mojom::GoogleWebVisibility::FIRST_PARTY);
const std::string variations_header_any_context =
headers->headers_map.at(variations::mojom::GoogleWebVisibility::ANY);
std::set<variations::VariationID> ids_first_party;
std::set<variations::VariationID> trigger_ids_first_party;
ASSERT_TRUE(variations::ExtractVariationIds(variations_header_first_party,
&ids_first_party,
&trigger_ids_first_party));
EXPECT_FALSE(base::Contains(ids_first_party, signed_in_id));
std::set<variations::VariationID> ids_any_context;
std::set<variations::VariationID> trigger_ids_any_context;
ASSERT_TRUE(variations::ExtractVariationIds(variations_header_any_context,
&ids_any_context,
&trigger_ids_any_context));
EXPECT_FALSE(base::Contains(ids_any_context, signed_in_id));
} }
INSTANTIATE_TEST_SUITE_P( INSTANTIATE_TEST_SUITE_P(
......
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