blob: 4fc6c2b5f40bf7241b115b5964bcf87fc0f88607 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/history/android/android_history_provider_service.h"
#include "chrome/browser/history/history_backend.h"
#include "chrome/browser/history/history_service.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/profiles/profile.h"
using history::HistoryBackend;
AndroidHistoryProviderService::AndroidHistoryProviderService(Profile* profile)
: profile_(profile) {
}
AndroidHistoryProviderService::~AndroidHistoryProviderService() {
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::QueryHistoryAndBookmarks(
const std::vector<history::HistoryAndBookmarkRow::ColumnID>& projections,
const std::string& selection,
const std::vector<string16>& selection_args,
const std::string& sort_order,
CancelableRequestConsumerBase* consumer,
const QueryCallback& callback) {
QueryRequest* request = new QueryRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::QueryHistoryAndBookmarks, NULL, request,
projections, selection, selection_args, sort_order);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::UpdateHistoryAndBookmarks(
const history::HistoryAndBookmarkRow& row,
const std::string& selection,
const std::vector<string16>& selection_args,
CancelableRequestConsumerBase* consumer,
const UpdateCallback& callback) {
UpdateRequest* request = new UpdateRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::UpdateHistoryAndBookmarks, NULL, request, row,
selection, selection_args);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::DeleteHistoryAndBookmarks(
const std::string& selection,
const std::vector<string16>& selection_args,
CancelableRequestConsumerBase* consumer,
const DeleteCallback& callback) {
DeleteRequest* request = new DeleteRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::DeleteHistoryAndBookmarks, NULL, request,
selection, selection_args);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::InsertHistoryAndBookmark(
const history::HistoryAndBookmarkRow& values,
CancelableRequestConsumerBase* consumer,
const InsertCallback& callback) {
InsertRequest* request = new InsertRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::InsertHistoryAndBookmark, NULL, request, values);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::DeleteHistory(
const std::string& selection,
const std::vector<string16>& selection_args,
CancelableRequestConsumerBase* consumer,
const DeleteCallback& callback) {
DeleteRequest* request = new DeleteRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::DeleteHistory, NULL, request, selection,
selection_args);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::MoveStatement(
history::AndroidStatement* statement,
int current_pos,
int destination,
CancelableRequestConsumerBase* consumer,
const MoveStatementCallback& callback) {
MoveStatementRequest* request = new MoveStatementRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::MoveStatement, NULL, request, statement,
current_pos, destination);
} else {
request->ForwardResultAsync(request->handle(), current_pos);
}
return request->handle();
}
void AndroidHistoryProviderService::CloseStatement(
history::AndroidStatement* statement) {
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->ScheduleAndForget(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::CloseStatement, statement);
} else {
delete statement;
}
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::InsertSearchTerm(
const history::SearchRow& row,
CancelableRequestConsumerBase* consumer,
const InsertCallback& callback) {
InsertRequest* request = new InsertRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::InsertSearchTerm, NULL, request, row);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::UpdateSearchTerms(
const history::SearchRow& row,
const std::string& selection,
const std::vector<string16>& selection_args,
CancelableRequestConsumerBase* consumer,
const UpdateCallback& callback) {
UpdateRequest* request = new UpdateRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::UpdateSearchTerms, NULL, request, row, selection,
selection_args);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::DeleteSearchTerms(
const std::string& selection,
const std::vector<string16>& selection_args,
CancelableRequestConsumerBase* consumer,
const DeleteCallback& callback) {
DeleteRequest* request = new DeleteRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::DeleteSearchTerms, NULL, request, selection,
selection_args);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}
AndroidHistoryProviderService::Handle
AndroidHistoryProviderService::QuerySearchTerms(
const std::vector<history::SearchRow::ColumnID>& projections,
const std::string& selection,
const std::vector<string16>& selection_args,
const std::string& sort_order,
CancelableRequestConsumerBase* consumer,
const QueryCallback& callback) {
QueryRequest* request = new QueryRequest(callback);
AddRequest(request, consumer);
HistoryService* hs =
HistoryServiceFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS);
if (hs) {
hs->Schedule(HistoryService::PRIORITY_NORMAL,
&HistoryBackend::QuerySearchTerms, NULL, request, projections,
selection, selection_args, sort_order);
} else {
request->ForwardResultAsync(request->handle(), false, 0);
}
return request->handle();
}