Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / history / web_history_service.cc
index 8dfe959..a8be69c 100644 (file)
@@ -8,11 +8,14 @@
 #include "base/json/json_reader.h"
 #include "base/json/json_writer.h"
 #include "base/metrics/histogram.h"
+#include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
 #include "chrome/browser/signin/profile_oauth2_token_service.h"
 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
+#include "chrome/browser/signin/signin_manager.h"
+#include "chrome/browser/signin/signin_manager_factory.h"
 #include "google_apis/gaia/gaia_urls.h"
 #include "google_apis/gaia/google_service_auth_error.h"
 #include "google_apis/gaia/oauth2_token_service.h"
@@ -82,8 +85,10 @@ class RequestImpl : public WebHistoryService::Request,
 
     ProfileOAuth2TokenService* token_service =
         ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
+    SigninManagerBase* signin_manager =
+        SigninManagerFactory::GetForProfile(profile_);
     token_request_ = token_service->StartRequest(
-        token_service->GetPrimaryAccountId(), oauth_scopes, this);
+        signin_manager->GetAuthenticatedAccountId(), oauth_scopes, this);
     is_pending_ = true;
   }
 
@@ -103,9 +108,12 @@ class RequestImpl : public WebHistoryService::Request,
       oauth_scopes.insert(kHistoryOAuthScope);
       ProfileOAuth2TokenService* token_service =
           ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
-      token_service->InvalidateToken(token_service->GetPrimaryAccountId(),
-                                     oauth_scopes,
-                                     access_token_);
+      SigninManagerBase* signin_manager =
+          SigninManagerFactory::GetForProfile(profile_);
+      token_service->InvalidateToken(
+          signin_manager->GetAuthenticatedAccountId(),
+          oauth_scopes,
+          access_token_);
 
       access_token_.clear();
       Start();
@@ -297,6 +305,7 @@ WebHistoryService::WebHistoryService(Profile* profile)
 }
 
 WebHistoryService::~WebHistoryService() {
+  STLDeleteElements(&pending_expire_requests_);
 }
 
 scoped_ptr<WebHistoryService::Request> WebHistoryService::QueryHistory(
@@ -314,7 +323,7 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::QueryHistory(
   return request.PassAs<Request>();
 }
 
-scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistory(
+void WebHistoryService::ExpireHistory(
     const std::vector<ExpireHistoryArgs>& expire_list,
     const ExpireWebHistoryCallback& callback) {
   base::DictionaryValue delete_request;
@@ -361,10 +370,10 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistory(
       new RequestImpl(profile_, url, completion_callback));
   request->set_post_data(post_data);
   request->Start();
-  return request.PassAs<Request>();
+  pending_expire_requests_.insert(request.release());
 }
 
-scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistoryBetween(
+void WebHistoryService::ExpireHistoryBetween(
     const std::set<GURL>& restrict_urls,
     base::Time begin_time,
     base::Time end_time,
@@ -373,7 +382,7 @@ scoped_ptr<WebHistoryService::Request> WebHistoryService::ExpireHistoryBetween(
   expire_list.back().urls = restrict_urls;
   expire_list.back().begin_time = begin_time;
   expire_list.back().end_time = end_time;
-  return ExpireHistory(expire_list, callback);
+  ExpireHistory(expire_list, callback);
 }
 
 // static
@@ -397,7 +406,10 @@ void WebHistoryService::ExpireHistoryCompletionCallback(
     if (response_value)
       response_value->GetString("version_info", &server_version_info_);
   }
-  callback.Run(request, response_value.get() && success);
+  callback.Run(response_value.get() && success);
+  // Clean up from pending requests.
+  pending_expire_requests_.erase(request);
+  delete request;
 }
 
 }  // namespace history