Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2017-10-26 17:09:55 +0300
committermpimenov <mpimenov@users.noreply.github.com>2017-10-27 16:13:24 +0300
commitf6f53abfb3889db924fa5eff06b54dc01a580545 (patch)
treecdb197eaf8204a0e0863552cf08be72c5cbd8dfd
parent04681c216d8d197fdec4dfdf0e805e5774dbfc93 (diff)
[search] Move viewport to search params.
-rw-r--r--map/framework.cpp22
-rw-r--r--map/framework.hpp8
-rw-r--r--search/engine.cpp12
-rw-r--r--search/engine.hpp8
-rw-r--r--search/processor.cpp3
-rw-r--r--search/processor.hpp2
-rw-r--r--search/search_integration_tests/downloader_search_test.cpp3
-rw-r--r--search/search_integration_tests/helpers.cpp5
-rw-r--r--search/search_integration_tests/interactive_search_test.cpp9
-rw-r--r--search/search_integration_tests/processor_test.cpp9
-rw-r--r--search/search_params.hpp1
-rw-r--r--search/search_quality/assessment_tool/main_model.cpp2
-rw-r--r--search/search_quality/features_collector_tool/features_collector_tool.cpp2
-rw-r--r--search/search_quality/sample.cpp1
-rw-r--r--search/search_tests_support/test_search_engine.cpp5
-rw-r--r--search/search_tests_support/test_search_engine.hpp5
-rw-r--r--search/search_tests_support/test_search_request.cpp13
-rw-r--r--search/search_tests_support/test_search_request.hpp3
18 files changed, 59 insertions, 54 deletions
diff --git a/map/framework.cpp b/map/framework.cpp
index 3ad2c9f633..5b2bd35123 100644
--- a/map/framework.cpp
+++ b/map/framework.cpp
@@ -295,7 +295,10 @@ void Framework::OnViewportChanged(ScreenBase const & screen)
{
auto & intent = m_searchIntents[i];
if (intent.m_isDelayed)
+ {
+ intent.m_params.m_viewport = GetCurrentViewport();
Search(intent);
+ }
}
}
@@ -1339,6 +1342,8 @@ bool Framework::SearchEverywhere(search::EverywhereSearchParams const & params)
p.m_query = params.m_query;
p.m_inputLocale = params.m_inputLocale;
p.m_mode = search::Mode::Everywhere;
+ if (m_isViewportInitialized)
+ p.m_viewport = GetCurrentViewport();
p.m_forceSearch = true;
p.m_suggestsEnabled = true;
p.m_hotelsFilter = params.m_hotelsFilter;
@@ -1364,6 +1369,8 @@ bool Framework::SearchInViewport(search::ViewportSearchParams const & params)
search::SearchParams p;
p.m_query = params.m_query;
p.m_inputLocale = params.m_inputLocale;
+ if (m_isViewportInitialized)
+ p.m_viewport = GetCurrentViewport();
p.m_mode = search::Mode::Viewport;
p.m_forceSearch = false;
p.m_suggestsEnabled = false;
@@ -1391,6 +1398,8 @@ bool Framework::SearchInDownloader(DownloaderSearchParams const & params)
search::SearchParams p;
p.m_query = params.m_query;
p.m_inputLocale = params.m_inputLocale;
+ if (m_isViewportInitialized)
+ p.m_viewport = GetCurrentViewport();
p.m_mode = search::Mode::Downloader;
p.m_forceSearch = true;
p.m_suggestsEnabled = false;
@@ -1624,7 +1633,7 @@ bool Framework::Search(search::SearchParams const & params)
if (ParseEditorDebugCommand(params))
return true;
- if (QueryMayBeSkipped(intent, rParams, GetCurrentViewport()))
+ if (QueryMayBeSkipped(intent, rParams))
return false;
intent.m_params = rParams;
@@ -1647,8 +1656,7 @@ void Framework::Search(SearchIntent & intent) const
return;
}
- intent.m_viewport = GetCurrentViewport();
- intent.m_handle = m_searchEngine->Search(intent.m_params, intent.m_viewport);
+ intent.m_handle = m_searchEngine->Search(intent.m_params);
intent.m_isDelayed = false;
}
@@ -1660,11 +1668,13 @@ void Framework::SetCurrentPositionIfPossible(search::SearchParams & params)
params.SetPosition(ms::LatLon(lat, lon));
}
-bool Framework::QueryMayBeSkipped(SearchIntent const & intent, search::SearchParams const & params,
- m2::RectD const & viewport) const
+bool Framework::QueryMayBeSkipped(SearchIntent const & intent,
+ search::SearchParams const & params) const
{
auto const & lastParams = intent.m_params;
- auto const & lastViewport = intent.m_viewport;
+ auto const & lastViewport = lastParams.m_viewport;
+
+ auto const & viewport = params.m_viewport;
if (params.m_forceSearch)
return false;
diff --git a/map/framework.hpp b/map/framework.hpp
index 4a5759c214..5e532a63ee 100644
--- a/map/framework.hpp
+++ b/map/framework.hpp
@@ -519,7 +519,6 @@ private:
{
search::SearchParams m_params;
weak_ptr<search::ProcessorHandle> m_handle;
- m2::RectD m_viewport;
bool m_isDelayed = false;
};
@@ -546,10 +545,9 @@ private:
bool Search(search::SearchParams const & params);
void Search(SearchIntent & intent) const;
- // Returns true when |params| and |viewport| are almost the same as
- // the latest search query's params and viewport in the |intent|.
- bool QueryMayBeSkipped(SearchIntent const & intent, search::SearchParams const & params,
- m2::RectD const & viewport) const;
+ // Returns true when |params| is almost the same as the latest
+ // search query params in |intent|.
+ bool QueryMayBeSkipped(SearchIntent const & intent, search::SearchParams const & params) const;
void OnUpdateGpsTrackPointsCallback(vector<pair<size_t, location::GpsTrackInfo>> && toAdd,
pair<size_t, size_t> const & toRemove);
diff --git a/search/engine.cpp b/search/engine.cpp
index 9e8bce1d26..30a5eea97b 100644
--- a/search/engine.cpp
+++ b/search/engine.cpp
@@ -124,12 +124,12 @@ Engine::~Engine()
thread.join();
}
-weak_ptr<ProcessorHandle> Engine::Search(SearchParams const & params, m2::RectD const & viewport)
+weak_ptr<ProcessorHandle> Engine::Search(SearchParams const & params)
{
shared_ptr<ProcessorHandle> handle(new ProcessorHandle());
- PostMessage(Message::TYPE_TASK, [this, params, viewport, handle](Processor & processor)
+ PostMessage(Message::TYPE_TASK, [this, params, handle](Processor & processor)
{
- DoSearch(params, viewport, handle, processor);
+ DoSearch(params, handle, processor);
});
return handle;
}
@@ -222,8 +222,8 @@ void Engine::PostMessage(TArgs &&... args)
m_cv.notify_one();
}
-void Engine::DoSearch(SearchParams const & params, m2::RectD const & viewport,
- shared_ptr<ProcessorHandle> handle, Processor & processor)
+void Engine::DoSearch(SearchParams const & params, shared_ptr<ProcessorHandle> handle,
+ Processor & processor)
{
bool const viewportSearch = params.m_mode == Mode::Viewport;
@@ -235,6 +235,6 @@ void Engine::DoSearch(SearchParams const & params, m2::RectD const & viewport,
handle->Detach();
});
- processor.Search(params, viewport);
+ processor.Search(params);
}
} // namespace search
diff --git a/search/engine.hpp b/search/engine.hpp
index 5d16a2c4dc..85dff3c714 100644
--- a/search/engine.hpp
+++ b/search/engine.hpp
@@ -7,8 +7,6 @@
#include "indexer/categories_holder.hpp"
-#include "geometry/rect2d.hpp"
-
#include "coding/reader.hpp"
#include "base/macros.hpp"
@@ -98,7 +96,7 @@ public:
~Engine();
// Posts search request to the queue and returns its handle.
- weak_ptr<ProcessorHandle> Search(SearchParams const & params, m2::RectD const & viewport);
+ weak_ptr<ProcessorHandle> Search(SearchParams const & params);
// Sets default locale on all query processors.
void SetLocale(string const & locale);
@@ -154,8 +152,8 @@ private:
template <typename... TArgs>
void PostMessage(TArgs &&... args);
- void DoSearch(SearchParams const & params, m2::RectD const & viewport,
- shared_ptr<ProcessorHandle> handle, Processor & processor);
+ void DoSearch(SearchParams const & params, shared_ptr<ProcessorHandle> handle,
+ Processor & processor);
vector<Suggest> m_suggests;
diff --git a/search/processor.cpp b/search/processor.cpp
index ce6b8dc8ca..bc88cea171 100644
--- a/search/processor.cpp
+++ b/search/processor.cpp
@@ -428,7 +428,7 @@ void Processor::ForEachCategoryTypeFuzzy(StringSliceBase const & slice, ToDo &&
forward<ToDo>(toDo));
}
-void Processor::Search(SearchParams const & params, m2::RectD const & viewport)
+void Processor::Search(SearchParams const & params)
{
if (params.m_onStarted)
params.m_onStarted();
@@ -449,6 +449,7 @@ void Processor::Search(SearchParams const & params, m2::RectD const & viewport)
bool const viewportSearch = m_mode == Mode::Viewport;
bool rankPivotIsSet = false;
+ auto const & viewport = params.m_viewport;
if (!viewportSearch && params.IsValidPosition())
{
m2::PointD const pos = params.GetPositionMercator();
diff --git a/search/processor.hpp b/search/processor.hpp
index 61f0952196..6cede1db1a 100644
--- a/search/processor.hpp
+++ b/search/processor.hpp
@@ -91,7 +91,7 @@ public:
int8_t m_inputLocaleCode, m_currentLocaleCode;
inline bool IsEmptyQuery() const { return (m_prefix.empty() && m_tokens.empty()); }
- void Search(SearchParams const & params, m2::RectD const & viewport);
+ void Search(SearchParams const & params);
// Tries to generate a (lat, lon) result from |m_query|.
void SearchCoordinates();
diff --git a/search/search_integration_tests/downloader_search_test.cpp b/search/search_integration_tests/downloader_search_test.cpp
index e21b50f119..234c86f79e 100644
--- a/search/search_integration_tests/downloader_search_test.cpp
+++ b/search/search_integration_tests/downloader_search_test.cpp
@@ -106,7 +106,7 @@ class DownloaderSearchRequest : public TestSearchRequest, public TestDelegate
{
public:
DownloaderSearchRequest(TestSearchEngine & engine, string const & query)
- : TestSearchRequest(engine, MakeSearchParams(query), m2::RectD(0, 0, 1, 1) /* viewport */)
+ : TestSearchRequest(engine, MakeSearchParams(query))
, m_storage(kCountriesTxt, make_unique<TestMapFilesDownloader>())
, m_downloaderCallback(static_cast<DownloaderSearchCallback::Delegate &>(*this),
m_engine /* index */, m_engine.GetCountryInfoGetter(), m_storage,
@@ -129,6 +129,7 @@ private:
search::SearchParams p;
p.m_query = query;
p.m_inputLocale = "en";
+ p.m_viewport = m2::RectD(0, 0, 1, 1);
p.m_mode = search::Mode::Downloader;
p.m_forceSearch = true;
p.m_suggestsEnabled = false;
diff --git a/search/search_integration_tests/helpers.cpp b/search/search_integration_tests/helpers.cpp
index 3606fda4d5..d61f7c966e 100644
--- a/search/search_integration_tests/helpers.cpp
+++ b/search/search_integration_tests/helpers.cpp
@@ -74,7 +74,7 @@ bool SearchTest::ResultsMatch(vector<search::Result> const & results, TRules con
bool SearchTest::ResultsMatch(SearchParams const & params, TRules const & rules)
{
- tests_support::TestSearchRequest request(m_engine, params, m_viewport);
+ tests_support::TestSearchRequest request(m_engine, params);
request.Run();
return ResultsMatch(request.Results(), rules);
}
@@ -90,10 +90,11 @@ unique_ptr<tests_support::TestSearchRequest> SearchTest::MakeRequest(
SearchParams params;
params.m_query = query;
params.m_inputLocale = locale;
+ params.m_viewport = m_viewport;
params.m_mode = Mode::Everywhere;
params.m_suggestsEnabled = false;
- auto request = make_unique<tests_support::TestSearchRequest>(m_engine, params, m_viewport);
+ auto request = make_unique<tests_support::TestSearchRequest>(m_engine, params);
request->Run();
return request;
}
diff --git a/search/search_integration_tests/interactive_search_test.cpp b/search/search_integration_tests/interactive_search_test.cpp
index a1c5a8970b..8da096986a 100644
--- a/search/search_integration_tests/interactive_search_test.cpp
+++ b/search/search_integration_tests/interactive_search_test.cpp
@@ -138,16 +138,15 @@ UNIT_CLASS_TEST(InteractiveSearchTest, NearbyFeaturesInViewport)
SearchParams params;
params.m_query = "cafe";
- params.m_mode = Mode::Viewport;
params.m_inputLocale = "en";
+ params.m_viewport = m2::RectD(m2::PointD(-0.5, -0.5), m2::PointD(0.5, 0.5));
+ params.m_mode = Mode::Viewport;
params.m_minDistanceOnMapBetweenResults = 0.5;
params.m_forceSearch = true;
params.m_suggestsEnabled = false;
- m2::RectD const viewport(m2::PointD(-0.5, -0.5), m2::PointD(0.5, 0.5));
-
{
- TestSearchRequest request(m_engine, params, viewport);
+ TestSearchRequest request(m_engine, params);
request.Run();
TEST(MatchResults(m_engine, TRules{ExactMatch(id, cafe1), ExactMatch(id, cafe2),
@@ -159,7 +158,7 @@ UNIT_CLASS_TEST(InteractiveSearchTest, NearbyFeaturesInViewport)
params.m_minDistanceOnMapBetweenResults = 1.0;
{
- TestSearchRequest request(m_engine, params, viewport);
+ TestSearchRequest request(m_engine, params);
request.Run();
auto const & results = request.Results();
diff --git a/search/search_integration_tests/processor_test.cpp b/search/search_integration_tests/processor_test.cpp
index 1b2ac83208..552efe5f84 100644
--- a/search/search_integration_tests/processor_test.cpp
+++ b/search/search_integration_tests/processor_test.cpp
@@ -311,15 +311,15 @@ UNIT_CLASS_TEST(ProcessorTest, DisableSuggests)
builder.Add(london2);
});
- SetViewport(m2::RectD(m2::PointD(0.5, 0.5), m2::PointD(1.5, 1.5)));
{
SearchParams params;
params.m_query = "londo";
params.m_inputLocale = "en";
+ params.m_viewport = m2::RectD(m2::PointD(0.5, 0.5), m2::PointD(1.5, 1.5));
params.m_mode = Mode::Downloader;
params.m_suggestsEnabled = false;
- TestSearchRequest request(m_engine, params, m_viewport);
+ TestSearchRequest request(m_engine, params);
request.Run();
TRules rules = {ExactMatch(worldId, london1), ExactMatch(worldId, london2)};
@@ -839,10 +839,10 @@ UNIT_CLASS_TEST(ProcessorTest, HotelsFiltering)
SearchParams params;
params.m_query = "hotel";
params.m_inputLocale = "en";
+ params.m_viewport = m2::RectD(m2::PointD(-1, -1), m2::PointD(2, 2));
params.m_mode = Mode::Everywhere;
params.m_suggestsEnabled = false;
- SetViewport(m2::RectD(m2::PointD(-1, -1), m2::PointD(2, 2)));
{
TRules rules = {ExactMatch(id, h1), ExactMatch(id, h2), ExactMatch(id, h3), ExactMatch(id, h4)};
TEST(ResultsMatch(params, rules), ());
@@ -1078,11 +1078,10 @@ UNIT_CLASS_TEST(ProcessorTest, Cian)
builder.Add(nonameBuilding);
});
- SetViewport(m2::RectD(m2::PointD(-1.0, -1.0), m2::PointD(1.0, 1.0)));
-
SearchParams params;
params.m_query = "cian";
params.m_inputLocale = "en";
+ params.m_viewport = m2::RectD(m2::PointD(-1.0, -1.0), m2::PointD(1.0, 1.0));
params.m_mode = Mode::Everywhere;
params.m_suggestsEnabled = false;
diff --git a/search/search_params.hpp b/search/search_params.hpp
index ed9e01c047..04c1c3de99 100644
--- a/search/search_params.hpp
+++ b/search/search_params.hpp
@@ -38,6 +38,7 @@ struct SearchParams
std::string m_inputLocale;
boost::optional<ms::LatLon> m_position;
+ m2::RectD m_viewport;
// A minimum distance between search results in meters, needed for
// pre-ranking of viewport search results.
diff --git a/search/search_quality/assessment_tool/main_model.cpp b/search/search_quality/assessment_tool/main_model.cpp
index 9057b716d2..b9c988841e 100644
--- a/search/search_quality/assessment_tool/main_model.cpp
+++ b/search/search_quality/assessment_tool/main_model.cpp
@@ -169,7 +169,7 @@ void MainModel::OnSampleSelected(int index)
relevances, goldenMatching, actualMatching));
};
- m_queryHandle = engine.Search(params, sample.m_viewport);
+ m_queryHandle = engine.Search(params);
m_view->OnSearchStarted();
}
}
diff --git a/search/search_quality/features_collector_tool/features_collector_tool.cpp b/search/search_quality/features_collector_tool/features_collector_tool.cpp
index 7b3e5c582a..09b8d3b20c 100644
--- a/search/search_quality/features_collector_tool/features_collector_tool.cpp
+++ b/search/search_quality/features_collector_tool/features_collector_tool.cpp
@@ -178,7 +178,7 @@ int main(int argc, char * argv[])
search::SearchParams params;
sample.FillSearchParams(params);
- TestSearchRequest request(engine, params, sample.m_viewport);
+ TestSearchRequest request(engine, params);
request.Run();
auto const & results = request.Results();
diff --git a/search/search_quality/sample.cpp b/search/search_quality/sample.cpp
index afc36f916b..841ad63021 100644
--- a/search/search_quality/sample.cpp
+++ b/search/search_quality/sample.cpp
@@ -190,6 +190,7 @@ void Sample::FillSearchParams(search::SearchParams & params) const
{
params.m_query = strings::ToUtf8(m_query);
params.m_inputLocale = m_locale;
+ params.m_viewport = m_viewport;
params.m_mode = Mode::Everywhere;
if (m_posAvailable)
params.SetPosition(MercatorBounds::ToLatLon(m_pos));
diff --git a/search/search_tests_support/test_search_engine.cpp b/search/search_tests_support/test_search_engine.cpp
index c871635669..ac87596aff 100644
--- a/search/search_tests_support/test_search_engine.cpp
+++ b/search/search_tests_support/test_search_engine.cpp
@@ -27,10 +27,9 @@ TestSearchEngine::TestSearchEngine(unique_ptr<::search::ProcessorFactory> factor
TestSearchEngine::~TestSearchEngine() {}
-weak_ptr<::search::ProcessorHandle> TestSearchEngine::Search(::search::SearchParams const & params,
- m2::RectD const & viewport)
+weak_ptr<::search::ProcessorHandle> TestSearchEngine::Search(::search::SearchParams const & params)
{
- return m_engine.Search(params, viewport);
+ return m_engine.Search(params);
}
} // namespace tests_support
} // namespace search
diff --git a/search/search_tests_support/test_search_engine.hpp b/search/search_tests_support/test_search_engine.hpp
index c312df6185..15515bb44d 100644
--- a/search/search_tests_support/test_search_engine.hpp
+++ b/search/search_tests_support/test_search_engine.hpp
@@ -2,8 +2,6 @@
#include "indexer/index.hpp"
-#include "geometry/rect2d.hpp"
-
#include "search/engine.hpp"
#include "std/string.hpp"
@@ -35,8 +33,7 @@ public:
void LoadCitiesBoundaries() { m_engine.LoadCitiesBoundaries(); }
- weak_ptr<search::ProcessorHandle> Search(search::SearchParams const & params,
- m2::RectD const & viewport);
+ weak_ptr<search::ProcessorHandle> Search(search::SearchParams const & params);
storage::CountryInfoGetter & GetCountryInfoGetter() { return *m_infoGetter; }
diff --git a/search/search_tests_support/test_search_request.cpp b/search/search_tests_support/test_search_request.cpp
index 6be5e46905..20997235c9 100644
--- a/search/search_tests_support/test_search_request.cpp
+++ b/search/search_tests_support/test_search_request.cpp
@@ -13,17 +13,17 @@ namespace tests_support
{
TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & query,
string const & locale, Mode mode, m2::RectD const & viewport)
- : m_engine(engine), m_viewport(viewport)
+ : m_engine(engine)
{
m_params.m_query = query;
m_params.m_inputLocale = locale;
+ m_params.m_viewport = viewport;
m_params.m_mode = mode;
SetUpCallbacks();
}
-TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, SearchParams params,
- m2::RectD const & viewport)
- : m_engine(engine), m_params(params), m_viewport(viewport)
+TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, SearchParams const & params)
+ : m_engine(engine), m_params(params)
{
SetUpCallbacks();
}
@@ -32,10 +32,11 @@ TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & q
string const & locale, Mode mode, m2::RectD const & viewport,
SearchParams::OnStarted const & onStarted,
SearchParams::OnResults const & onResults)
- : m_engine(engine), m_viewport(viewport)
+ : m_engine(engine)
{
m_params.m_query = query;
m_params.m_inputLocale = locale;
+ m_params.m_viewport = viewport;
m_params.m_mode = mode;
m_params.m_onStarted = onStarted;
m_params.m_onResults = onResults;
@@ -63,7 +64,7 @@ vector<search::Result> const & TestSearchRequest::Results() const
void TestSearchRequest::Start()
{
- m_engine.Search(m_params, m_viewport);
+ m_engine.Search(m_params);
}
void TestSearchRequest::Wait()
diff --git a/search/search_tests_support/test_search_request.hpp b/search/search_tests_support/test_search_request.hpp
index 316dba0f1d..fc79fe34c6 100644
--- a/search/search_tests_support/test_search_request.hpp
+++ b/search/search_tests_support/test_search_request.hpp
@@ -26,7 +26,7 @@ class TestSearchRequest
public:
TestSearchRequest(TestSearchEngine & engine, string const & query, string const & locale,
Mode mode, m2::RectD const & viewport);
- TestSearchRequest(TestSearchEngine & engine, SearchParams params, m2::RectD const & viewport);
+ TestSearchRequest(TestSearchEngine & engine, SearchParams const & params);
// Initiates the search and waits for it to finish.
void Run();
@@ -67,7 +67,6 @@ protected:
TestSearchEngine & m_engine;
SearchParams m_params;
- m2::RectD m_viewport;
};
} // namespace tests_support
} // namespace search