Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: chrome/browser/ui/webui/signin/inline_login_handler.cc

Issue 256623002: Implemented inline login dialog for Chrome OS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge conflicts resolved. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/signin/inline_login_handler.h" 5 #include "chrome/browser/ui/webui/signin/inline_login_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/prefs/pref_service.h"
9 #include "base/strings/utf_string_conversions.h"
8 #include "base/values.h" 10 #include "base/values.h"
9 #include "chrome/browser/browser_process.h" 11 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/signin/signin_promo.h"
14 #include "chrome/browser/ui/browser_navigator.h"
15 #include "chrome/common/pref_names.h"
16 #include "content/public/browser/web_contents.h"
10 #include "content/public/browser/web_ui.h" 17 #include "content/public/browser/web_ui.h"
11 #include "google_apis/gaia/gaia_urls.h" 18 #include "google_apis/gaia/gaia_urls.h"
19 #include "net/base/url_util.h"
12 20
13 InlineLoginHandler::InlineLoginHandler() {} 21 InlineLoginHandler::InlineLoginHandler() {}
14 22
15 InlineLoginHandler::~InlineLoginHandler() {} 23 InlineLoginHandler::~InlineLoginHandler() {}
16 24
17 void InlineLoginHandler::RegisterMessages() { 25 void InlineLoginHandler::RegisterMessages() {
18 web_ui()->RegisterMessageCallback("initialize", 26 web_ui()->RegisterMessageCallback("initialize",
19 base::Bind(&InlineLoginHandler::HandleInitializeMessage, 27 base::Bind(&InlineLoginHandler::HandleInitializeMessage,
20 base::Unretained(this))); 28 base::Unretained(this)));
21 web_ui()->RegisterMessageCallback("completeLogin", 29 web_ui()->RegisterMessageCallback("completeLogin",
22 base::Bind(&InlineLoginHandler::HandleCompleteLoginMessage, 30 base::Bind(&InlineLoginHandler::HandleCompleteLoginMessage,
23 base::Unretained(this))); 31 base::Unretained(this)));
32 web_ui()->RegisterMessageCallback(
33 "switchToFullTab",
34 base::Bind(&InlineLoginHandler::HandleSwitchToFullTabMessage,
35 base::Unretained(this)));
24 } 36 }
25 37
26 void InlineLoginHandler::HandleInitializeMessage(const base::ListValue* args) { 38 void InlineLoginHandler::HandleInitializeMessage(const base::ListValue* args) {
27 base::DictionaryValue params; 39 base::DictionaryValue params;
28 40
29 const std::string& app_locale = g_browser_process->GetApplicationLocale(); 41 const std::string& app_locale = g_browser_process->GetApplicationLocale();
30 params.SetString("hl", app_locale); 42 params.SetString("hl", app_locale);
31 GaiaUrls* gaiaUrls = GaiaUrls::GetInstance(); 43 GaiaUrls* gaiaUrls = GaiaUrls::GetInstance();
32 params.SetString("gaiaUrl", gaiaUrls->gaia_url().spec()); 44 params.SetString("gaiaUrl", gaiaUrls->gaia_url().spec());
33 params.SetInteger("authMode", kDefaultAuthMode); 45 params.SetInteger("authMode", InlineLoginHandler::kDesktopAuthMode);
46
47 const GURL& current_url = web_ui()->GetWebContents()->GetURL();
48 signin::Source source = signin::GetSourceForPromoURL(current_url);
49 if (source == signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT ||
50 source == signin::SOURCE_AVATAR_BUBBLE_SIGN_IN) {
51 // Drop the leading slash in the path.
52 params.SetString(
53 "gaiaPath",
54 GaiaUrls::GetInstance()->embedded_signin_url().path().substr(1));
55 }
56
57 params.SetString(
58 "continueUrl",
59 signin::GetLandingURL("source", static_cast<int>(source)).spec());
60
61 std::string default_email;
62 if (source != signin::SOURCE_AVATAR_BUBBLE_ADD_ACCOUNT) {
63 default_email = Profile::FromWebUI(web_ui())->GetPrefs()->GetString(
64 prefs::kGoogleServicesLastUsername);
65 } else {
66 if (!net::GetValueForKeyInQuery(current_url, "email", &default_email))
67 default_email.clear();
68 }
69 if (!default_email.empty())
70 params.SetString("email", default_email);
71
72 std::string frame_url;
73 net::GetValueForKeyInQuery(current_url, "frameUrl", &frame_url);
74 if (!frame_url.empty())
75 params.SetString("frameUrl", frame_url);
76
77 std::string is_constrained;
78 net::GetValueForKeyInQuery(current_url, "constrained", &is_constrained);
79 if (!is_constrained.empty())
80 params.SetString("constrained", is_constrained);
81
82 // TODO(rogerta): this needs to be passed on to gaia somehow.
83 std::string read_only_email;
84 net::GetValueForKeyInQuery(current_url, "readOnlyEmail", &read_only_email);
85 if (!read_only_email.empty())
86 params.SetString("readOnlyEmail", read_only_email);
34 87
35 SetExtraInitParams(params); 88 SetExtraInitParams(params);
36 89
37 web_ui()->CallJavascriptFunction("inline.login.loadAuthExtension", params); 90 web_ui()->CallJavascriptFunction("inline.login.loadAuthExtension", params);
38 } 91 }
39 92
40 void InlineLoginHandler::HandleCompleteLoginMessage( 93 void InlineLoginHandler::HandleCompleteLoginMessage(
41 const base::ListValue* args) { 94 const base::ListValue* args) {
42 CompleteLogin(args); 95 CompleteLogin(args);
43 } 96 }
97
98 void InlineLoginHandler::HandleSwitchToFullTabMessage(
99 const base::ListValue* args) {
100 base::string16 url_str;
101 CHECK(args->GetString(0, &url_str));
102
103 content::WebContents* web_contents = web_ui()->GetWebContents();
104 GURL main_frame_url(web_contents->GetURL());
105 main_frame_url = net::AppendOrReplaceQueryParameter(
106 main_frame_url, "frameUrl", base::UTF16ToASCII(url_str));
107 chrome::NavigateParams params(
108 Profile::FromWebUI(web_ui()),
109 net::AppendOrReplaceQueryParameter(main_frame_url, "constrained", "0"),
110 content::PAGE_TRANSITION_AUTO_TOPLEVEL);
111 chrome::Navigate(&params);
112
113 web_ui()->CallJavascriptFunction("inline.login.closeDialog");
114 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/signin/inline_login_handler.h ('k') | chrome/browser/ui/webui/signin/inline_login_handler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698