Index: chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.cc |
diff --git a/chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.cc b/chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.cc |
index eddb322a8bdbcdff7ef9f69e2b35273a7b0bf2c4..103c4b76bd8b8a0037618f4286aa1f37793c1449 100644 |
--- a/chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.cc |
+++ b/chrome/browser/ui/app_list/search/launcher_search/launcher_search_provider.cc |
@@ -7,6 +7,8 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/chromeos/launcher_search_provider/service.h" |
+using chromeos::launcher_search_provider::Service; |
+ |
namespace app_list { |
namespace { |
@@ -30,11 +32,21 @@ void LauncherSearchProvider::Start(bool /*is_voice_query*/, |
} |
void LauncherSearchProvider::Stop() { |
+ // Since app_list code can call Stop() at any time, we stop timer here in |
+ // order not to start query after Stop() is called. |
+ query_timer_.Stop(); |
+ |
+ Service* service = Service::Get(profile_); |
+ |
+ // Since we delay queries and filter out empty string queries, it can happen |
+ // that no query is running at service side. |
+ if (service->IsQueryRunning()) |
+ service->OnQueryEnded(); |
} |
void LauncherSearchProvider::DelayQuery(const base::Closure& closure) { |
- base::TimeDelta delay = base::TimeDelta::FromMilliseconds( |
- kLauncherSearchProviderQueryDelayInMs); |
+ base::TimeDelta delay = |
+ base::TimeDelta::FromMilliseconds(kLauncherSearchProviderQueryDelayInMs); |
if (base::Time::Now() - last_query_time_ > delay) { |
query_timer_.Stop(); |
closure.Run(); |
@@ -46,8 +58,8 @@ void LauncherSearchProvider::DelayQuery(const base::Closure& closure) { |
void LauncherSearchProvider::StartInternal(const base::string16& query) { |
if (!query.empty()) { |
- chromeos::launcher_search_provider::Service::Get(profile_)->OnQueryStarted( |
- base::UTF16ToUTF8(query), kLauncherSearchProviderMaxResults); |
+ Service::Get(profile_)->OnQueryStarted(base::UTF16ToUTF8(query), |
+ kLauncherSearchProviderMaxResults); |
} |
} |