Extension SW: Add persist and load support for filtered (lazy) events.
Implement a) persisting, b) retrieving and c) loading filtered events
from extension service workers.
a) Filtered SW events are stored under a new ExtensionPrefs key
"filtered_service_worker_events", similar to the non worker
counterpart ("filtered_events" key).
b) EventRouter::GetRegisteredEvents() can now retrieve service
worker specific events.
c) EventListenerMap::LoadFilteredLazyListener() can now load
service worker lazy events.
Add an end to end test for lazy event with filters, that survives
across browser restart.
Bug: 721147
Change-Id: Ida47cd02d515e7fe08def8da4662fc992c78e00d
Reviewed-on: https://chromium-review.googlesource.com/707954
Commit-Queue: Istiaque Ahmed <[email protected]>
Reviewed-by: Devlin <[email protected]>
Cr-Commit-Position: refs/heads/master@{#507762}
diff --git a/extensions/browser/event_router.h b/extensions/browser/event_router.h
index 6596fa85..b7d8134 100644
--- a/extensions/browser/event_router.h
+++ b/extensions/browser/event_router.h
@@ -301,17 +301,20 @@
// Adds a filter to an event.
void AddFilterToEvent(const std::string& event_name,
const std::string& extension_id,
+ bool is_for_service_worker,
const base::DictionaryValue* filter);
// Removes a filter from an event.
void RemoveFilterFromEvent(const std::string& event_name,
const std::string& extension_id,
+ bool is_for_service_worker,
const base::DictionaryValue* filter);
// Returns the dictionary of event filters that the given extension has
// registered.
const base::DictionaryValue* GetFilteredEvents(
- const std::string& extension_id);
+ const std::string& extension_id,
+ RegisteredEventType type);
// Track the dispatched events that have not yet sent an ACK from the
// renderer.