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() { ...@@ -610,6 +610,9 @@ cr.define('cr.login', function() {
// argument to show an email domain. // argument to show an email domain.
url = appendParam(url, 'hd', data.emailDomain); url = appendParam(url, 'hd', data.emailDomain);
} }
if (data.showTos) {
url = appendParam(url, 'show_tos', data.showTos);
}
if (data.ignoreCrOSIdpSetting === true) { if (data.ignoreCrOSIdpSetting === true) {
url = appendParam(url, 'ignoreCrOSIdpSetting', 'true'); url = appendParam(url, 'ignoreCrOSIdpSetting', 'true');
} }
......
...@@ -269,12 +269,14 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate { ...@@ -269,12 +269,14 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
const std::string& email_domains, const std::string& email_domains,
const std::string& gcpw_endpoint_path, const std::string& gcpw_endpoint_path,
const std::string& additional_mdm_oauth_scopes, const std::string& additional_mdm_oauth_scopes,
const std::string& show_tos,
HandleGcpwSigninCompleteResult signin_callback) HandleGcpwSigninCompleteResult signin_callback)
: reauth_email_(reauth_email), : reauth_email_(reauth_email),
reauth_gaia_id_(reauth_gaia_id), reauth_gaia_id_(reauth_gaia_id),
email_domains_(email_domains), email_domains_(email_domains),
gcpw_endpoint_path_(gcpw_endpoint_path), gcpw_endpoint_path_(gcpw_endpoint_path),
additional_mdm_oauth_scopes(additional_mdm_oauth_scopes), additional_mdm_oauth_scopes(additional_mdm_oauth_scopes),
show_tos_(show_tos),
signin_callback_(std::move(signin_callback)) {} signin_callback_(std::move(signin_callback)) {}
GURL GetDialogContentURL() const override { GURL GetDialogContentURL() const override {
...@@ -300,6 +302,11 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate { ...@@ -300,6 +302,11 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
gcpw_endpoint_path_); gcpw_endpoint_path_);
} }
if (!show_tos_.empty()) {
base_url = net::AppendQueryParameter(
base_url, credential_provider::kShowTosSwitch, show_tos_);
}
if (email_domains_.empty()) if (email_domains_.empty())
return base_url; return base_url;
...@@ -387,6 +394,9 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate { ...@@ -387,6 +394,9 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
// Additional mdm oauth scopes flag value. // Additional mdm oauth scopes flag value.
const std::string additional_mdm_oauth_scopes; 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 // Callback that will be called when a valid sign in has been completed
// through the dialog. // through the dialog.
mutable HandleGcpwSigninCompleteResult signin_callback_; mutable HandleGcpwSigninCompleteResult signin_callback_;
...@@ -467,12 +477,15 @@ views::WebDialogView* ShowCredentialProviderSigninDialog( ...@@ -467,12 +477,15 @@ views::WebDialogView* ShowCredentialProviderSigninDialog(
credential_provider::kGcpwEndpointPathSwitch); credential_provider::kGcpwEndpointPathSwitch);
std::string additional_mdm_oauth_scopes = command_line.GetSwitchValueASCII( std::string additional_mdm_oauth_scopes = command_line.GetSwitchValueASCII(
credential_provider::kGcpwAdditionalOauthScopes); 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 // Delegate to handle the result of the sign in request. This will
// delete itself eventually when it receives the OnDialogClosed call. // delete itself eventually when it receives the OnDialogClosed call.
auto delegate = std::make_unique<CredentialProviderWebDialogDelegate>( auto delegate = std::make_unique<CredentialProviderWebDialogDelegate>(
reauth_email, reauth_gaia_id, email_domains, gcpw_endpoint_path, 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. // 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 // This view will be automatically deleted by the widget that owns it when it
......
...@@ -139,7 +139,6 @@ void CredentialProviderSigninDialogWinDialogTest::ShowSigninDialog( ...@@ -139,7 +139,6 @@ void CredentialProviderSigninDialogWinDialogTest::ShowSigninDialog(
base::BindOnce( base::BindOnce(
&CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete, &CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete,
base::Unretained(this))); base::Unretained(this)));
web_contents_ = web_view_->web_contents(); web_contents_ = web_view_->web_contents();
} }
...@@ -172,6 +171,27 @@ void CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete( ...@@ -172,6 +171,27 @@ void CredentialProviderSigninDialogWinDialogTest::HandleSignInComplete(
std::move(signin_complete_closure_).Run(); 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, IN_PROC_BROWSER_TEST_F(CredentialProviderSigninDialogWinDialogTest,
SimulateEscape) { SimulateEscape) {
ShowSigninDialog(base::CommandLine(base::CommandLine::NoProgram::NO_PROGRAM)); ShowSigninDialog(base::CommandLine(base::CommandLine::NoProgram::NO_PROGRAM));
......
...@@ -878,11 +878,11 @@ class HtmlRequestTracker { ...@@ -878,11 +878,11 @@ class HtmlRequestTracker {
} }
} }
if (query_params_match) if (!query_params_match)
return true; return false;
} }
return false; return true;
} }
private: private:
...@@ -935,6 +935,11 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest, ...@@ -935,6 +935,11 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
signin_metrics::Reason reason = signin_metrics::Reason::REASON_FETCH_LST_ONLY; signin_metrics::Reason reason = signin_metrics::Reason::REASON_FETCH_LST_ONLY;
auto signin_url = signin::GetEmbeddedPromoURL(access_point, reason, false); 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); ui_test_utils::NavigateToURL(browser(), signin_url);
WaitUntilUIReady(browser()); WaitUntilUIReady(browser());
...@@ -942,7 +947,8 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest, ...@@ -942,7 +947,8 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
// Expected gaia endpoint to load. // Expected gaia endpoint to load.
GURL gaia_url = GaiaUrls::GetInstance()->embedded_setup_windows_url(); 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, IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
...@@ -960,6 +966,10 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest, ...@@ -960,6 +966,10 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
signin_url = net::AppendQueryParameter( signin_url = net::AppendQueryParameter(
signin_url, credential_provider::kValidateGaiaIdSigninPromoParameter, signin_url, credential_provider::kValidateGaiaIdSigninPromoParameter,
"gaia_id"); "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); ui_test_utils::NavigateToURL(browser(), signin_url);
WaitUntilUIReady(browser()); WaitUntilUIReady(browser());
...@@ -967,7 +977,7 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest, ...@@ -967,7 +977,7 @@ IN_PROC_BROWSER_TEST_F(InlineLoginCorrectGaiaUrlBrowserTest,
// Expected gaia endpoint to load. // Expected gaia endpoint to load.
GURL gaia_url = GaiaUrls::GetInstance()->embedded_setup_windows_url(); GURL gaia_url = GaiaUrls::GetInstance()->embedded_setup_windows_url();
EXPECT_TRUE( EXPECT_TRUE(tracker_.PageRequested(
tracker_.PageRequested(gaia_url, {{"flow", "reauth"}, {"email", email}})); gaia_url, {{"flow", "reauth"}, {"email", email}, {"show_tos", "1"}}));
} }
#endif #endif
...@@ -519,6 +519,13 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) { ...@@ -519,6 +519,13 @@ void InlineLoginHandlerImpl::SetExtraInitParams(base::DictionaryValue& params) {
params.SetString("emailDomain", all_email_domains[0]); 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. // 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 // This will keep the user from being able to access a fully functional
// Chrome window in incognito mode. // Chrome window in incognito mode.
......
...@@ -75,6 +75,10 @@ const char kGaiaIdSwitch[] = "gaia-id"; ...@@ -75,6 +75,10 @@ const char kGaiaIdSwitch[] = "gaia-id";
// for GCPW. // for GCPW.
const char kGcpwEndpointPathSwitch[] = "gcpw-endpoint-path"; 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 // Allows specifying additional oauth scopes for the access token being passed
// to GCPW. // to GCPW.
const char kGcpwAdditionalOauthScopes[] = "gcpw-additional-oauth-scopes"; const char kGcpwAdditionalOauthScopes[] = "gcpw-additional-oauth-scopes";
......
...@@ -87,6 +87,7 @@ extern const char kEmailDomainsSwitch[]; ...@@ -87,6 +87,7 @@ extern const char kEmailDomainsSwitch[];
extern const char kGaiaIdSwitch[]; extern const char kGaiaIdSwitch[];
extern const char kGcpwEndpointPathSwitch[]; extern const char kGcpwEndpointPathSwitch[];
extern const char kGcpwAdditionalOauthScopes[]; extern const char kGcpwAdditionalOauthScopes[];
extern const char kShowTosSwitch[];
// Parameter appended to sign in URL to pass valid signin domains to the inline // Parameter appended to sign in URL to pass valid signin domains to the inline
// login handler. These domains are separated by ','. // 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