| Index: components/history/core/browser/web_history_service.cc
|
| diff --git a/components/history/core/browser/web_history_service.cc b/components/history/core/browser/web_history_service.cc
|
| index b46f6fbac5817cc61d481a17efbcb3fe7c9b5267..46177dcaf6e914c28ae3d00cdc4b182ef4ede39b 100644
|
| --- a/components/history/core/browser/web_history_service.cc
|
| +++ b/components/history/core/browser/web_history_service.cc
|
| @@ -44,6 +44,9 @@ const char kHistoryAudioHistoryUrl[] =
|
| const char kHistoryAudioHistoryChangeUrl[] =
|
| "https://history.google.com/history/api/change";
|
|
|
| +const char kQueryWebAndAppActivityUrl[] =
|
| + "https://history.google.com/history/api/lookup?client=web_app";
|
| +
|
| const char kPostDataMimeType[] = "text/plain";
|
|
|
| // The maximum number of retries for the URLFetcher requests.
|
| @@ -298,6 +301,7 @@ WebHistoryService::WebHistoryService(
|
| WebHistoryService::~WebHistoryService() {
|
| STLDeleteElements(&pending_expire_requests_);
|
| STLDeleteElements(&pending_audio_history_requests_);
|
| + STLDeleteElements(&pending_web_and_app_activity_requests_);
|
| }
|
|
|
| WebHistoryService::Request* WebHistoryService::CreateRequest(
|
| @@ -443,6 +447,20 @@ bool WebHistoryService::HasOtherFormsOfBrowsingHistory() const {
|
| return false;
|
| }
|
|
|
| +void WebHistoryService::QueryWebAndAppActivity(
|
| + const QueryWebAndAppActivityCallback& callback) {
|
| + // Wrap the original callback into a generic completion callback.
|
| + CompletionCallback completion_callback =
|
| + base::Bind(&WebHistoryService::QueryWebAndAppActivityCompletionCallback,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + callback);
|
| +
|
| + GURL url(kQueryWebAndAppActivityUrl);
|
| + Request* request = CreateRequest(url, completion_callback);
|
| + pending_web_and_app_activity_requests_.insert(request);
|
| + request->Start();
|
| +}
|
| +
|
| // static
|
| void WebHistoryService::QueryHistoryCompletionCallback(
|
| const WebHistoryService::QueryWebHistoryCallback& callback,
|
| @@ -458,6 +476,9 @@ void WebHistoryService::ExpireHistoryCompletionCallback(
|
| const WebHistoryService::ExpireWebHistoryCallback& callback,
|
| WebHistoryService::Request* request,
|
| bool success) {
|
| + pending_expire_requests_.erase(request);
|
| + scoped_ptr<Request> request_ptr(request);
|
| +
|
| scoped_ptr<base::DictionaryValue> response_value;
|
| if (success) {
|
| response_value = ReadResponse(request);
|
| @@ -465,9 +486,6 @@ void WebHistoryService::ExpireHistoryCompletionCallback(
|
| response_value->GetString("version_info", &server_version_info_);
|
| }
|
| callback.Run(response_value.get() && success);
|
| - // Clean up from pending requests.
|
| - pending_expire_requests_.erase(request);
|
| - delete request;
|
| }
|
|
|
| void WebHistoryService::AudioHistoryCompletionCallback(
|
| @@ -491,4 +509,25 @@ void WebHistoryService::AudioHistoryCompletionCallback(
|
| callback.Run(success && response_value, enabled_value);
|
| }
|
|
|
| +void WebHistoryService::QueryWebAndAppActivityCompletionCallback(
|
| + const WebHistoryService::QueryWebAndAppActivityCallback& callback,
|
| + WebHistoryService::Request* request,
|
| + bool success) {
|
| + pending_web_and_app_activity_requests_.erase(request);
|
| + scoped_ptr<Request> request_ptr(request);
|
| +
|
| + scoped_ptr<base::DictionaryValue> response_value;
|
| + bool web_and_app_activity_enabled = false;
|
| +
|
| + if (success) {
|
| + response_value = ReadResponse(request);
|
| + if (response_value) {
|
| + response_value->GetBoolean(
|
| + "history_recording_enabled", &web_and_app_activity_enabled);
|
| + }
|
| + }
|
| +
|
| + callback.Run(web_and_app_activity_enabled);
|
| +}
|
| +
|
| } // namespace history
|
|
|