Commit ec09ade0 authored by Rakesh Soma's avatar Rakesh Soma Committed by Commit Bot

Support for show_tos in the query parameters for windows embedded gaia login.

Bug: 1045536
Change-Id: Idd58ba1153e1e006bc07c54305db39e217e91779
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2020243
Auto-Submit: Rakesh Soma <rakeshsoma@google.com>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarTien Mai <tienmai@chromium.org>
Commit-Queue: Rakesh Soma <rakeshsoma@google.com>
Cr-Commit-Position: refs/heads/master@{#735440}
parent 22aaec16
......@@ -610,6 +610,9 @@ cr.define('cr.login', function() {
// argument to show an email domain.
url = appendParam(url, 'hd', data.emailDomain);
}
if (data.showTos) {
url = appendParam(url, 'show_tos', data.showTos);
}
if (data.ignoreCrOSIdpSetting === true) {
url = appendParam(url, 'ignoreCrOSIdpSetting', 'true');
}
......
......@@ -269,12 +269,14 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
const std::string& email_domains,
const std::string& gcpw_endpoint_path,
const std::string& additional_mdm_oauth_scopes,
const std::string& show_tos,
HandleGcpwSigninCompleteResult signin_callback)
: reauth_email_(reauth_email),
reauth_gaia_id_(reauth_gaia_id),
email_domains_(email_domains),
gcpw_endpoint_path_(gcpw_endpoint_path),
additional_mdm_oauth_scopes(additional_mdm_oauth_scopes),
show_tos_(show_tos),
signin_callback_(std::move(signin_callback)) {}
GURL GetDialogContentURL() const override {
......@@ -300,6 +302,11 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
gcpw_endpoint_path_);
}
if (!show_tos_.empty()) {
base_url = net::AppendQueryParameter(
base_url, credential_provider::kShowTosSwitch, show_tos_);
}
if (email_domains_.empty())
return base_url;
......@@ -387,6 +394,9 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
// Additional mdm oauth scopes flag value.
const std::string additional_mdm_oauth_scopes;
// Show tos page in the login path when this parameter is set to 1.
const std::string show_tos_;
// Callback that will be called when a valid sign in has been completed
// through the dialog.
mutable HandleGcpwSigninCompleteResult signin_callback_;
......@@ -467,12 +477,15 @@ views::WebDialogView* ShowCredentialProviderSigninDialog(
credential_provider::kGcpwEndpointPathSwitch);
std::string additional_mdm_oauth_scopes = command_line.GetSwitchValueASCII(
credential_provider::kGcpwAdditionalOauthScopes);
std::string show_tos =
command_line.GetSwitchValueASCII(credential_provider::kShowTosSwitch);
// Delegate to handle the result of the sign in request. This will
// delete itself eventually when it receives the OnDialogClosed call.
auto delegate = std::make_unique<CredentialProviderWebDialogDelegate>(
reauth_email, reauth_gaia_id, email_domains, gcpw_endpoint_path,
additional_mdm_oauth_scopes, std::move(signin_complete_handler));
additional_mdm_oauth_scopes, show_tos,
std::move(signin_complete_handler));
// The web dialog view that will contain the web ui for the login screen.
// This view will be automatically deleted by the widget that owns it when it
......
......@@ -139,7 +139,6 @@ void CredentialProviderSigninDialogWinDialogTest::ShowSigninDialog(
base::BindOnce(
&CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete,
base::Unretained(this)));
web_contents_ = web_view_->web_contents();
}
......@@ -172,6 +171,27 @@ void CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete(
std::move(signin_complete_closure_).Run();
}
IN_PROC_BROWSER_TEST_F(CredentialProviderSigninDialogWinDialogTest,
ShowTosInUrlParams) {
base::CommandLine command_line =
base::CommandLine(base::CommandLine::NoProgram::NO_PROGRAM);
// Append show_tos switch and verify if the tos is part of URL.
const std::string show_tos = "1";
command_line.AppendSwitchASCII(::credential_provider::kShowTosSwitch,
show_tos);
ShowSigninDialog(command_line);
WaitForDialogToLoad();
EXPECT_TRUE(web_view_->GetDialogContentURL().has_query());
std::string query_parameters = web_view_->GetDialogContentURL().query();
EXPECT_TRUE(query_parameters.find("show_tos=1") != std::string::npos);
web_view_->GetWidget()->CloseWithReason(
views::Widget::ClosedReason::kEscKeyPressed);
base::RunLoop run_loop;
run_loop.RunUntilIdle();
}
IN_PROC_BROWSER_TEST_F(CredentialProviderSigninDialogWinDialogTest,
SimulateEscape) {
ShowSigninDialog(base::CommandLine(base::CommandLine::NoProgram::NO_PROGRAM));
......
......@@ -878,11 +878,11 @@ class HtmlRequestTracker {
}
}
if (query_params_match)
return true;
if (!query_params_match)
return false;
}
return false;
return true;
}
private:
......@@ -935,6 +935,11 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
signin_metrics::Reason reason = signin_metrics::Reason::REASON_FETCH_LST_ONLY;
auto signin_url = signin::GetEmbeddedPromoURL(access_point, reason, false);
// Set the show_tos parameter so that we can verify if that was passed in
// while loading the signin page.
signin_url = net::AppendQueryParameter(
signin_url, credential_provider::kShowTosSwitch, "1");
ui_test_utils::NavigateToURL(browser(), signin_url);
WaitUntilUIReady(browser());
......@@ -942,7 +947,8 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
// Expected gaia endpoint to load.
GURL gaia_url = GaiaUrls::GetInstance()->embedded_setup_windows_url();
EXPECT_TRUE(tracker_.PageRequested(gaia_url, {{"flow", "signin"}}));
EXPECT_TRUE(tracker_.PageRequested(gaia_url,
{{"flow", "signin"}, {"show_tos", "1"}}));
}
IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
......@@ -960,6 +966,10 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
signin_url = net::AppendQueryParameter(
signin_url, credential_provider::kValidateGaiaIdSigninPromoParameter,
"gaia_id");
// Set the show_tos parameter so that we can verify if that was passed in
// while loading the signin page.
signin_url = net::AppendQueryParameter(
signin_url, credential_provider::kShowTosSwitch, "1");
ui_test_utils::NavigateToURL(browser(), signin_url);
WaitUntilUIReady(browser());
......@@ -967,7 +977,7 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
// Expected gaia endpoint to load.
GURL gaia_url = GaiaUrls::GetInstance()->embedded_setup_windows_url();
EXPECT_TRUE(
tracker_.PageRequested(gaia_url, {{"flow", "reauth"}, {"email", email}}));
EXPECT_TRUE(tracker_.PageRequested(
gaia_url, {{"flow", "reauth"}, {"email", email}, {"show_tos", "1"}}));
}
#endif
......@@ -519,6 +519,13 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) {
params.SetString("emailDomain", all_email_domains[0]);
}
std::string show_tos;
if (net::GetValueForKeyInQuery(
current_url, credential_provider::kShowTosSwitch, &show_tos)) {
if (!show_tos.empty())
params.SetString("showTos", show_tos);
}
// Prevent opening a new window if the embedded page fails to load.
// This will keep the user from being able to access a fully functional
// Chrome window in incognito mode.
......
......@@ -75,6 +75,10 @@ const char kGaiaIdSwitch[] = "gaia-id";
// for GCPW.
const char kGcpwEndpointPathSwitch[] = "gcpw-endpoint-path";
// The show_tos parameter is used to specify whether tos screen needs to be
// shown as part of the login process or not.
const char kShowTosSwitch[] = "show_tos";
// Allows specifying additional oauth scopes for the access token being passed
// to GCPW.
const char kGcpwAdditionalOauthScopes[] = "gcpw-additional-oauth-scopes";
......
......@@ -87,6 +87,7 @@ extern const char kEmailDomainsSwitch[];
extern const char kGaiaIdSwitch[];
extern const char kGcpwEndpointPathSwitch[];
extern const char kGcpwAdditionalOauthScopes[];
extern const char kShowTosSwitch[];
// Parameter appended to sign in URL to pass valid signin domains to the inline
// login handler. These domains are separated by ','.
......
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