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

Unified Diff: google_apis/gaia/merge_session_helper.h

Issue 424233002: When the user signs in, make sure to set cookies on all reachable google (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: google_apis/gaia/merge_session_helper.h
diff --git a/google_apis/gaia/merge_session_helper.h b/google_apis/gaia/merge_session_helper.h
index 962eaa5ea6d09ac1e10a5255a56cf73540f59dda..4816a50f0fa92661254acfce0090e24af28e1b40 100644
--- a/google_apis/gaia/merge_session_helper.h
+++ b/google_apis/gaia/merge_session_helper.h
@@ -8,6 +8,7 @@
#include <deque>
#include "base/observer_list.h"
+#include "base/timer/timer.h"
#include "google_apis/gaia/gaia_auth_consumer.h"
#include "google_apis/gaia/ubertoken_fetcher.h"
#include "net/url_request/url_fetcher_delegate.h"
@@ -17,6 +18,7 @@ class GoogleServiceAuthError;
class OAuth2TokenService;
namespace net {
+class URLFetcher;
class URLRequestContextGetter;
}
@@ -41,6 +43,61 @@ class MergeSessionHelper : public GaiaAuthConsumer,
virtual ~Observer() {}
};
+ // Class to retrieve the extrernal connection check results from gaia.
+ class ExternalCcResultFetcher : public GaiaAuthConsumer,
guohui 2014/08/05 19:14:07 nits: i think in general we do not allow non-stand
Roger Tawa OOO till Jul 10th 2014/08/08 19:29:53 As before, Cc is the actual name of parameter, so
+ public net::URLFetcherDelegate {
+ public:
+ // Maps connection URLs, as returned by StartGetCheckConnectionInfo() to
+ // token and URLFetcher used to fetch the URL.
+ typedef std::map<GURL, std::pair<std::string, net::URLFetcher*> >
+ URLToTokenAndFetcher;
+
+ // Maps tokens to the fetched result for that token.
+ typedef std::map<std::string, std::string> ResultMap;
+
+ ExternalCcResultFetcher(MergeSessionHelper* helper);
+ virtual ~ExternalCcResultFetcher();
+
+ // Gets the current value of the external connection check result string.
+ std::string GetExternalCcResult();
+
+ // Start fetching the external CC result. If a fetch is already in progress
+ // it is canceled.
+ void Start();
+
+ // Returns a copy of the internal token to fetcher map.
+ URLToTokenAndFetcher get_fetcher_map_for_testing() {
+ return fetchers_;
+ }
+
+ // Simulate a timeout for tests.
+ void TimeoutForTests() {
+ Timeout();
+ }
+
+ private:
+ // Overridden from GaiaAuthConsumer.
+ virtual void OnGetCheckConnectionInfoSuccess(
+ const std::string& data) OVERRIDE;
+
+ // Creates and initializes a URL fetcher for doing a connection check.
+ net::URLFetcher* CreateFetcher(const GURL& url);
+
+ // Overridden from URLFetcherDelgate.
+ virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
+
+ // Any fetches still ongoing after this call are considered timed out.
+ void Timeout();
+
+ void CleanupTransientState();
+
+ MergeSessionHelper* helper_;
+ base::OneShotTimer<ExternalCcResultFetcher> timer_;
+ scoped_ptr<GaiaAuthFetcher> gaia_auth_fetcher_;
+ URLToTokenAndFetcher fetchers_;
+ ResultMap results_;
+ };
+
MergeSessionHelper(OAuth2TokenService* token_service,
net::URLRequestContextGetter* request_context,
Observer* observer);
@@ -74,7 +131,13 @@ class MergeSessionHelper : public GaiaAuthConsumer,
// Returns true of there are pending log ins or outs.
bool is_running() const { return accounts_.size() > 0; }
+ // Start the process of fetching the external check connection result so that
+ // its ready when we try to perform a merge session.
+ void StartFetchingExternalCcResult();
+
private:
+ net::URLRequestContextGetter* request_context() { return request_context_; }
+
// Overridden from UbertokenConsumer.
virtual void OnUbertokenSuccess(const std::string& token) OVERRIDE;
virtual void OnUbertokenFailure(const GoogleServiceAuthError& error) OVERRIDE;
@@ -104,6 +167,7 @@ class MergeSessionHelper : public GaiaAuthConsumer,
net::URLRequestContextGetter* request_context_;
scoped_ptr<GaiaAuthFetcher> gaia_auth_fetcher_;
scoped_ptr<UbertokenFetcher> uber_token_fetcher_;
+ ExternalCcResultFetcher result_fetcher_;
// A worklist for this class. Accounts names are stored here if
// we are pending a signin action for that account. Empty strings

Powered by Google App Engine
This is Rietveld 408576698