| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ | 5 #ifndef CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ |
| 6 #define CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ | 6 #define CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 StartSyncArgs(); | 95 StartSyncArgs(); |
| 96 StartSyncArgs(Profile* profile, | 96 StartSyncArgs(Profile* profile, |
| 97 Browser* browser, | 97 Browser* browser, |
| 98 OneClickSigninHelper::AutoAccept auto_accept, | 98 OneClickSigninHelper::AutoAccept auto_accept, |
| 99 const std::string& session_index, | 99 const std::string& session_index, |
| 100 const std::string& email, | 100 const std::string& email, |
| 101 const std::string& password, | 101 const std::string& password, |
| 102 const std::string& refresh_token, | 102 const std::string& refresh_token, |
| 103 content::WebContents* web_contents, | 103 content::WebContents* web_contents, |
| 104 bool untrusted_confirmation_required, | 104 bool untrusted_confirmation_required, |
| 105 signin::Source source, | 105 signin_metrics::Source source, |
| 106 OneClickSigninSyncStarter::Callback callback); | 106 OneClickSigninSyncStarter::Callback callback); |
| 107 ~StartSyncArgs(); | 107 ~StartSyncArgs(); |
| 108 | 108 |
| 109 Profile* profile; | 109 Profile* profile; |
| 110 Browser* browser; | 110 Browser* browser; |
| 111 OneClickSigninHelper::AutoAccept auto_accept; | 111 OneClickSigninHelper::AutoAccept auto_accept; |
| 112 std::string session_index; | 112 std::string session_index; |
| 113 std::string email; | 113 std::string email; |
| 114 std::string password; | 114 std::string password; |
| 115 std::string refresh_token; | 115 std::string refresh_token; |
| 116 | 116 |
| 117 // Web contents in which the sync setup page should be displayed, | 117 // Web contents in which the sync setup page should be displayed, |
| 118 // if necessary. Can be NULL. | 118 // if necessary. Can be NULL. |
| 119 content::WebContents* web_contents; | 119 content::WebContents* web_contents; |
| 120 | 120 |
| 121 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required; | 121 OneClickSigninSyncStarter::ConfirmationRequired confirmation_required; |
| 122 signin::Source source; | 122 signin_metrics::Source source; |
| 123 OneClickSigninSyncStarter::Callback callback; | 123 OneClickSigninSyncStarter::Callback callback; |
| 124 }; | 124 }; |
| 125 | 125 |
| 126 // Wrapper to call OneClickSigninSyncStarter after fetching the refresh token | 126 // Wrapper to call OneClickSigninSyncStarter after fetching the refresh token |
| 127 // if needed. Also verifies that the cookies are correct if no password is | 127 // if needed. Also verifies that the cookies are correct if no password is |
| 128 // specified, and checks that the email from the cookies match the expected | 128 // specified, and checks that the email from the cookies match the expected |
| 129 // email address. | 129 // email address. |
| 130 class SyncStarterWrapper : public SigninOAuthHelper::Consumer, | 130 class SyncStarterWrapper : public SigninOAuthHelper::Consumer, |
| 131 public chrome::BrowserListObserver { | 131 public chrome::BrowserListObserver { |
| 132 public: | 132 public: |
| (...skipping 29 matching lines...) Expand all Loading... |
| 162 | 162 |
| 163 OneClickSigninHelper::StartSyncArgs args_; | 163 OneClickSigninHelper::StartSyncArgs args_; |
| 164 chrome::HostDesktopType desktop_type_; | 164 chrome::HostDesktopType desktop_type_; |
| 165 OneClickSigninSyncStarter::StartSyncMode start_mode_; | 165 OneClickSigninSyncStarter::StartSyncMode start_mode_; |
| 166 scoped_ptr<SigninOAuthHelper> signin_oauth_helper_; | 166 scoped_ptr<SigninOAuthHelper> signin_oauth_helper_; |
| 167 base::WeakPtrFactory<SyncStarterWrapper> weak_pointer_factory_; | 167 base::WeakPtrFactory<SyncStarterWrapper> weak_pointer_factory_; |
| 168 | 168 |
| 169 DISALLOW_COPY_AND_ASSIGN(SyncStarterWrapper); | 169 DISALLOW_COPY_AND_ASSIGN(SyncStarterWrapper); |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 static void LogHistogramValue(signin::Source source, int action); | 172 static void LogHistogramValue(int action); |
| 173 | 173 |
| 174 // Returns true if the one-click signin feature can be offered at this time. | 174 // Returns true if the one-click signin feature can be offered at this time. |
| 175 // If |email| is not empty, then the profile is checked to see if it's | 175 // If |email| is not empty, then the profile is checked to see if it's |
| 176 // already connected to a google account or if the user has already rejected | 176 // already connected to a google account or if the user has already rejected |
| 177 // one-click sign-in with this email, in which cases a one click signin | 177 // one-click sign-in with this email, in which cases a one click signin |
| 178 // should not be offered. | 178 // should not be offered. |
| 179 // | 179 // |
| 180 // If |can_offer_for| is |CAN_OFFER_FOR_INTERSTITAL_ONLY|, then only do the | 180 // If |can_offer_for| is |CAN_OFFER_FOR_INTERSTITAL_ONLY|, then only do the |
| 181 // checks that would affect the interstitial page. Otherwise, do the checks | 181 // checks that would affect the interstitial page. Otherwise, do the checks |
| 182 // that would affect the interstitial and the explicit sign ins. | 182 // that would affect the interstitial and the explicit sign ins. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 209 // the last signed in email of the current profile, then Chrome will show a | 209 // the last signed in email of the current profile, then Chrome will show a |
| 210 // confirmation dialog before starting sync. It returns true if there is a | 210 // confirmation dialog before starting sync. It returns true if there is a |
| 211 // cross account error, and false otherwise. | 211 // cross account error, and false otherwise. |
| 212 static bool HandleCrossAccountError( | 212 static bool HandleCrossAccountError( |
| 213 Profile* profile, | 213 Profile* profile, |
| 214 const std::string& session_index, | 214 const std::string& session_index, |
| 215 const std::string& email, | 215 const std::string& email, |
| 216 const std::string& password, | 216 const std::string& password, |
| 217 const std::string& refresh_token, | 217 const std::string& refresh_token, |
| 218 OneClickSigninHelper::AutoAccept auto_accept, | 218 OneClickSigninHelper::AutoAccept auto_accept, |
| 219 signin::Source source, | 219 signin_metrics::Source source, |
| 220 OneClickSigninSyncStarter::StartSyncMode start_mode, | 220 OneClickSigninSyncStarter::StartSyncMode start_mode, |
| 221 OneClickSigninSyncStarter::Callback sync_callback); | 221 OneClickSigninSyncStarter::Callback sync_callback); |
| 222 | 222 |
| 223 static void RedirectToNtpOrAppsPage( | 223 static void RedirectToNtpOrAppsPage( |
| 224 content::WebContents* contents, signin::Source source); | 224 content::WebContents* contents, signin_metrics::Source source); |
| 225 | 225 |
| 226 // If the |source| is not settings page/webstore, redirects to | 226 // If the |source| is not settings page/webstore, redirects to |
| 227 // the NTP/Apps page. | 227 // the NTP/Apps page. |
| 228 static void RedirectToNtpOrAppsPageIfNecessary( | 228 static void RedirectToNtpOrAppsPageIfNecessary( |
| 229 content::WebContents* contents, signin::Source source); | 229 content::WebContents* contents, signin_metrics::Source source); |
| 230 | 230 |
| 231 // Remove the item currently at the top of the history list if it's | 231 // Remove the item currently at the top of the history list if it's |
| 232 // the Gaia redirect URL. Due to limitations of the NavigationController | 232 // the Gaia redirect URL. Due to limitations of the NavigationController |
| 233 // this cannot be done until a new page becomes "current". | 233 // this cannot be done until a new page becomes "current". |
| 234 static void RemoveSigninRedirectURLHistoryItem( | 234 static void RemoveSigninRedirectURLHistoryItem( |
| 235 content::WebContents* web_contents); | 235 content::WebContents* web_contents); |
| 236 | 236 |
| 237 static void LogConfirmHistogramValue(int action); | 237 static void LogConfirmHistogramValue(int action); |
| 238 | 238 |
| 239 private: | 239 private: |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 // being used. | 297 // being used. |
| 298 // | 298 // |
| 299 // |continue_url| is where Gaia will continue to when the sign in process is | 299 // |continue_url| is where Gaia will continue to when the sign in process is |
| 300 // done. For explicit sign ins, this is a URL chrome controls. For one-click | 300 // done. For explicit sign ins, this is a URL chrome controls. For one-click |
| 301 // sign in, this could be any google property. This URL is used to know | 301 // sign in, this could be any google property. This URL is used to know |
| 302 // when the sign process is over and to collect infomation from the user | 302 // when the sign process is over and to collect infomation from the user |
| 303 // entered on the Gaia sign in page (for explicit sign ins). | 303 // entered on the Gaia sign in page (for explicit sign ins). |
| 304 static void ShowInfoBarUIThread(const std::string& session_index, | 304 static void ShowInfoBarUIThread(const std::string& session_index, |
| 305 const std::string& email, | 305 const std::string& email, |
| 306 AutoAccept auto_accept, | 306 AutoAccept auto_accept, |
| 307 signin::Source source, | 307 signin_metrics::Source source, |
| 308 const GURL& continue_url, | 308 const GURL& continue_url, |
| 309 int child_id, | 309 int child_id, |
| 310 int route_id); | 310 int route_id); |
| 311 | 311 |
| 312 void RedirectToSignin(); | 312 void RedirectToSignin(); |
| 313 | 313 |
| 314 // Clear all data member of the helper, except for the error. | 314 // Clear all data member of the helper, except for the error. |
| 315 void CleanTransientState(); | 315 void CleanTransientState(); |
| 316 | 316 |
| 317 // Unitests that use a TestingProfile should call this. | 317 // Unitests that use a TestingProfile should call this. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 345 // interstitial page. It's set to true the first time we load one of those | 345 // interstitial page. It's set to true the first time we load one of those |
| 346 // pages and set to false when transient state is cleaned. | 346 // pages and set to false when transient state is cleaned. |
| 347 // Note: This should only be used for logging purposes. | 347 // Note: This should only be used for logging purposes. |
| 348 bool showing_signin_; | 348 bool showing_signin_; |
| 349 | 349 |
| 350 // Information about the account that has just logged in. | 350 // Information about the account that has just logged in. |
| 351 std::string session_index_; | 351 std::string session_index_; |
| 352 std::string email_; | 352 std::string email_; |
| 353 std::string password_; | 353 std::string password_; |
| 354 AutoAccept auto_accept_; | 354 AutoAccept auto_accept_; |
| 355 signin::Source source_; | 355 signin_metrics::Source source_; |
| 356 bool switched_to_advanced_; | 356 bool switched_to_advanced_; |
| 357 GURL continue_url_; | 357 GURL continue_url_; |
| 358 // The orignal continue URL after sync setup is complete. | 358 // The orignal continue URL after sync setup is complete. |
| 359 GURL original_continue_url_; | 359 GURL original_continue_url_; |
| 360 std::string error_message_; | 360 std::string error_message_; |
| 361 | 361 |
| 362 // Number of navigations since starting a sign in that is outside the | 362 // Number of navigations since starting a sign in that is outside the |
| 363 // the set of trusted Gaia URLs. Sign in attempts that include visits to | 363 // the set of trusted Gaia URLs. Sign in attempts that include visits to |
| 364 // one more untrusted will cause a modal dialog to appear asking the user | 364 // one more untrusted will cause a modal dialog to appear asking the user |
| 365 // to confirm, similar to the interstitial flow. | 365 // to confirm, similar to the interstitial flow. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 377 | 377 |
| 378 // Allows unittest to avoid starting sync for real. | 378 // Allows unittest to avoid starting sync for real. |
| 379 bool do_not_start_sync_for_testing_; | 379 bool do_not_start_sync_for_testing_; |
| 380 | 380 |
| 381 base::WeakPtrFactory<OneClickSigninHelper> weak_pointer_factory_; | 381 base::WeakPtrFactory<OneClickSigninHelper> weak_pointer_factory_; |
| 382 | 382 |
| 383 DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelper); | 383 DISALLOW_COPY_AND_ASSIGN(OneClickSigninHelper); |
| 384 }; | 384 }; |
| 385 | 385 |
| 386 #endif // CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ | 386 #endif // CHROME_BROWSER_UI_SYNC_ONE_CLICK_SIGNIN_HELPER_H_ |
| OLD | NEW |