blob: 9ddea2345492de86e61d53dabce6d8961137c601 [file] [log] [blame]
// Copyright 2019 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 "chromeos/components/local_search_service/local_search_service_sync.h"
#include <utility>
#include "chromeos/components/local_search_service/inverted_index_search.h"
#include "chromeos/components/local_search_service/linear_map_search.h"
namespace chromeos {
namespace local_search_service {
LocalSearchServiceSync::LocalSearchServiceSync() = default;
LocalSearchServiceSync::~LocalSearchServiceSync() = default;
IndexSync* LocalSearchServiceSync::GetIndexSync(IndexId index_id,
Backend backend,
PrefService* local_state) {
auto it = indices_.find(index_id);
if (it == indices_.end()) {
switch (backend) {
case Backend::kLinearMap:
it = indices_
.emplace(index_id, std::make_unique<LinearMapSearch>(
index_id, local_state))
.first;
break;
case Backend::kInvertedIndex:
it = indices_
.emplace(index_id, std::make_unique<InvertedIndexSearch>(
index_id, local_state))
.first;
}
}
DCHECK(it != indices_.end());
DCHECK(it->second);
return it->second.get();
}
} // namespace local_search_service
} // namespace chromeos