Commit 3ab7f9f0 authored by Kush Sinha's avatar Kush Sinha Committed by Commit Bot

Support opening incognito window in crOS add account UI

Chrome OS Account Manager's account addition dialog allows users to open
an incognito window, if they do not want to add a Secondary Account.
This is initiated by Gaia by sending a 'showIncognito' message.

Please check the comments around
https://issuetracker.google.com/114214633#comment29 for context.

Bug: b/114214633
Change-Id: Ida1f6093b2a141eccf6aff2b20bfc74fe7fe296c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1556835
Commit-Queue: Kush Sinha <sinhak@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#649185}
parent 93a2b12d
...@@ -634,6 +634,8 @@ cr.define('cr.login', function() { ...@@ -634,6 +634,8 @@ cr.define('cr.login', function() {
if (this.email_ && this.gaiaId_ && this.sessionIndex_) { if (this.email_ && this.gaiaId_ && this.sessionIndex_) {
this.maybeCompleteAuth_(); this.maybeCompleteAuth_();
} }
} else if (msg.method == 'showIncognito') {
this.dispatchEvent(new Event('showIncognito'));
} else { } else {
console.warn('Unrecognized message from GAIA: ' + msg.method); console.warn('Unrecognized message from GAIA: ' + msg.method);
} }
......
...@@ -56,6 +56,10 @@ cr.define('inline.login', function() { ...@@ -56,6 +56,10 @@ cr.define('inline.login', function() {
$('contents').classList.toggle('loading', true); $('contents').classList.toggle('loading', true);
} }
function onShowIncognito() {
chrome.send('showIncognito');
}
/** /**
* Initialize the UI. * Initialize the UI.
*/ */
...@@ -67,6 +71,7 @@ cr.define('inline.login', function() { ...@@ -67,6 +71,7 @@ cr.define('inline.login', function() {
authExtHost.addEventListener('newWindow', onNewWindow); authExtHost.addEventListener('newWindow', onNewWindow);
authExtHost.addEventListener('resize', onResize); authExtHost.addEventListener('resize', onResize);
authExtHost.addEventListener('authCompleted', onAuthCompleted); authExtHost.addEventListener('authCompleted', onAuthCompleted);
authExtHost.addEventListener('showIncognito', onShowIncognito);
chrome.send('initialize'); chrome.send('initialize');
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/webui/signin/inline_login_handler.h" #include "chrome/browser/ui/webui/signin/inline_login_handler.h"
#include "chromeos/components/account_manager/account_manager.h" #include "chromeos/components/account_manager/account_manager.h"
#include "chromeos/components/account_manager/account_manager_factory.h" #include "chromeos/components/account_manager/account_manager_factory.h"
...@@ -102,6 +103,16 @@ InlineLoginHandlerChromeOS::InlineLoginHandlerChromeOS( ...@@ -102,6 +103,16 @@ InlineLoginHandlerChromeOS::InlineLoginHandlerChromeOS(
InlineLoginHandlerChromeOS::~InlineLoginHandlerChromeOS() = default; InlineLoginHandlerChromeOS::~InlineLoginHandlerChromeOS() = default;
void InlineLoginHandlerChromeOS::RegisterMessages() {
InlineLoginHandler::RegisterMessages();
web_ui()->RegisterMessageCallback(
"showIncognito",
base::BindRepeating(
&InlineLoginHandlerChromeOS::ShowIncognitoAndCloseDialog,
base::Unretained(this)));
}
void InlineLoginHandlerChromeOS::SetExtraInitParams( void InlineLoginHandlerChromeOS::SetExtraInitParams(
base::DictionaryValue& params) { base::DictionaryValue& params) {
const GaiaUrls* const gaia_urls = GaiaUrls::GetInstance(); const GaiaUrls* const gaia_urls = GaiaUrls::GetInstance();
...@@ -144,4 +155,10 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const std::string& email, ...@@ -144,4 +155,10 @@ void InlineLoginHandlerChromeOS::CompleteLogin(const std::string& email,
auth_code); auth_code);
} }
void InlineLoginHandlerChromeOS::ShowIncognitoAndCloseDialog(
const base::ListValue* args) {
chrome::NewIncognitoWindow(Profile::FromWebUI(web_ui()));
close_dialog_closure_.Run();
}
} // namespace chromeos } // namespace chromeos
...@@ -21,6 +21,7 @@ class InlineLoginHandlerChromeOS : public InlineLoginHandler { ...@@ -21,6 +21,7 @@ class InlineLoginHandlerChromeOS : public InlineLoginHandler {
~InlineLoginHandlerChromeOS() override; ~InlineLoginHandlerChromeOS() override;
// InlineLoginHandler overrides. // InlineLoginHandler overrides.
void RegisterMessages() override;
void SetExtraInitParams(base::DictionaryValue& params) override; void SetExtraInitParams(base::DictionaryValue& params) override;
void CompleteLogin(const std::string& email, void CompleteLogin(const std::string& email,
const std::string& password, const std::string& password,
...@@ -32,6 +33,8 @@ class InlineLoginHandlerChromeOS : public InlineLoginHandler { ...@@ -32,6 +33,8 @@ class InlineLoginHandlerChromeOS : public InlineLoginHandler {
bool choose_what_to_sync) override; bool choose_what_to_sync) override;
private: private:
void ShowIncognitoAndCloseDialog(const base::ListValue* args);
base::RepeatingClosure close_dialog_closure_; base::RepeatingClosure close_dialog_closure_;
DISALLOW_COPY_AND_ASSIGN(InlineLoginHandlerChromeOS); DISALLOW_COPY_AND_ASSIGN(InlineLoginHandlerChromeOS);
}; };
......
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