Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(840)

Side by Side Diff: chrome/browser/chromeos/launcher_search_provider/service.cc

Issue 1043373002: Implement onQueryEnded. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/launcher_search_provider/service.h" 5 #include "chrome/browser/chromeos/launcher_search_provider/service.h"
6 6
7 #include "chrome/browser/chromeos/launcher_search_provider/service_factory.h" 7 #include "chrome/browser/chromeos/launcher_search_provider/service_factory.h"
8 #include "chrome/common/extensions/api/launcher_search_provider.h" 8 #include "chrome/common/extensions/api/launcher_search_provider.h"
9 #include "extensions/browser/extension_registry.h" 9 #include "extensions/browser/extension_registry.h"
10 #include "extensions/common/extension_set.h" 10 #include "extensions/common/extension_set.h"
11 #include "extensions/common/permissions/permissions_data.h" 11 #include "extensions/common/permissions/permissions_data.h"
12 12
13 namespace api_launcher_search_provider = 13 namespace api_launcher_search_provider =
14 extensions::api::launcher_search_provider; 14 extensions::api::launcher_search_provider;
15 using extensions::ExtensionId; 15 using extensions::ExtensionId;
16 using extensions::ExtensionSet; 16 using extensions::ExtensionSet;
17 17
18 namespace chromeos { 18 namespace chromeos {
19 namespace launcher_search_provider { 19 namespace launcher_search_provider {
20 20
21 Service::Service(Profile* profile, 21 Service::Service(Profile* profile,
22 extensions::ExtensionRegistry* extension_registry) 22 extensions::ExtensionRegistry* extension_registry)
23 : profile_(profile), extension_registry_(extension_registry), query_id_(0) { 23 : profile_(profile),
24 extension_registry_(extension_registry),
25 query_id_(0),
26 is_query_running_(false) {
24 } 27 }
25 28
26 Service::~Service() { 29 Service::~Service() {
27 } 30 }
28 31
29 // static 32 // static
30 Service* Service::Get(content::BrowserContext* context) { 33 Service* Service::Get(content::BrowserContext* context) {
31 return ServiceFactory::Get(context); 34 return ServiceFactory::Get(context);
32 } 35 }
33 36
34 void Service::OnQueryStarted(const std::string& query, const int max_result) { 37 void Service::OnQueryStarted(const std::string& query, const int max_result) {
38 DCHECK(!is_query_running_);
39 is_query_running_ = true;
40
35 ++query_id_; 41 ++query_id_;
36 42
37 extensions::EventRouter* event_router = 43 extensions::EventRouter* event_router =
38 extensions::EventRouter::Get(profile_); 44 extensions::EventRouter::Get(profile_);
39 45
40 std::set<ExtensionId> extension_ids = GetListenerExtensionIds(); 46 std::set<ExtensionId> extension_ids = GetListenerExtensionIds();
41 for (const ExtensionId extension_id : extension_ids) { 47 for (const ExtensionId extension_id : extension_ids) {
42 event_router->DispatchEventToExtension( 48 event_router->DispatchEventToExtension(
43 extension_id, 49 extension_id,
44 make_scoped_ptr(new extensions::Event( 50 make_scoped_ptr(new extensions::Event(
45 api_launcher_search_provider::OnQueryStarted::kEventName, 51 api_launcher_search_provider::OnQueryStarted::kEventName,
46 api_launcher_search_provider::OnQueryStarted::Create( 52 api_launcher_search_provider::OnQueryStarted::Create(
47 std::to_string(query_id_), query, max_result)))); 53 std::to_string(query_id_), query, max_result))));
48 } 54 }
49 } 55 }
50 56
57 void Service::OnQueryEnded() {
58 DCHECK(is_query_running_);
59
60 extensions::EventRouter* event_router =
61 extensions::EventRouter::Get(profile_);
62
63 std::set<ExtensionId> extension_ids = GetListenerExtensionIds();
64 for (const ExtensionId extension_id : extension_ids) {
65 event_router->DispatchEventToExtension(
66 extension_id,
67 make_scoped_ptr(new extensions::Event(
68 api_launcher_search_provider::OnQueryEnded::kEventName,
69 api_launcher_search_provider::OnQueryEnded::Create(
70 std::to_string(query_id_)))));
71 }
72
73 is_query_running_ = false;
74 }
75
76 bool Service::IsQueryRunning() const {
77 return is_query_running_;
78 }
79
51 std::set<ExtensionId> Service::GetListenerExtensionIds() { 80 std::set<ExtensionId> Service::GetListenerExtensionIds() {
52 std::set<ExtensionId> extension_ids; 81 std::set<ExtensionId> extension_ids;
53 82
54 const ExtensionSet& extension_set = extension_registry_->enabled_extensions(); 83 const ExtensionSet& extension_set = extension_registry_->enabled_extensions();
55 for (scoped_refptr<const extensions::Extension> extension : extension_set) { 84 for (scoped_refptr<const extensions::Extension> extension : extension_set) {
56 const extensions::PermissionsData* permission_data = 85 const extensions::PermissionsData* permission_data =
57 extension->permissions_data(); 86 extension->permissions_data();
58 const bool has_permission = permission_data->HasAPIPermission( 87 const bool has_permission = permission_data->HasAPIPermission(
59 extensions::APIPermission::kLauncherSearchProvider); 88 extensions::APIPermission::kLauncherSearchProvider);
60 if (has_permission) 89 if (has_permission)
61 extension_ids.insert(extension->id()); 90 extension_ids.insert(extension->id());
62 } 91 }
63 92
64 return extension_ids; 93 return extension_ids;
65 } 94 }
66 95
67 } // namespace launcher_search_provider 96 } // namespace launcher_search_provider
68 } // namespace chromeos 97 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698